Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 21 Nov 2017 15:28:13 +0000 (05:28 -1000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 21 Nov 2017 15:28:13 +0000 (05:28 -1000)
Pull printk updates from Petr Mladek:

 - print the warning about dropped messages on consoles on a separate
   line.   It makes it more legible.

 - one typo fix and small code clean up.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk:
  added new line symbol after warning about dropped messages
  printk: fix typo in printk_safe.c
  printk: simplify no_printk()

1  2 
include/linux/printk.h
kernel/printk/printk_safe.c

diff --combined include/linux/printk.h
index 905bba92f01598ae535b2d2cd737d1a78e739476,7911f736434619275d2c707f409c18b13b948f05..e9b603ee99532266a735555ffb784a939f18f5cf
@@@ -1,4 -1,3 +1,4 @@@
 +/* SPDX-License-Identifier: GPL-2.0 */
  #ifndef __KERNEL_PRINTK__
  #define __KERNEL_PRINTK__
  
@@@ -132,10 -131,8 +132,8 @@@ struct va_format 
   */
  #define no_printk(fmt, ...)                           \
  ({                                                    \
-       do {                                            \
-               if (0)                                  \
-                       printk(fmt, ##__VA_ARGS__);     \
-       } while (0);                                    \
+       if (0)                                          \
+               printk(fmt, ##__VA_ARGS__);             \
        0;                                              \
  })
  
@@@ -189,6 -186,7 +187,6 @@@ extern bool printk_timed_ratelimit(unsi
  
  extern int printk_delay_msec;
  extern int dmesg_restrict;
 -extern int kptr_restrict;
  
  extern int
  devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write, void __user *buf,
@@@ -279,8 -277,6 +277,8 @@@ static inline void printk_safe_flush_on
  }
  #endif
  
 +extern int kptr_restrict;
 +
  extern asmlinkage void dump_stack(void) __cold;
  
  #ifndef pr_fmt
index 724d9292d4b9614e62b78e7e0c27e0e8fb0dd49c,89558b85f45cca109b4e8882889caf8b501c5708..3e3c2004bb232661bae666e00e4645fad438aee6
@@@ -39,7 -39,7 +39,7 @@@
   * There are situations when we want to make sure that all buffers
   * were handled or when IRQs are blocked.
   */
 -static int printk_safe_irq_ready;
 +static int printk_safe_irq_ready __read_mostly;
  
  #define SAFE_LOG_BUF_LEN ((1 << CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT) -   \
                                sizeof(atomic_t) -                      \
@@@ -63,8 -63,11 +63,8 @@@ static DEFINE_PER_CPU(struct printk_saf
  /* Get flushed in a more safe context. */
  static void queue_flush_work(struct printk_safe_seq_buf *s)
  {
 -      if (printk_safe_irq_ready) {
 -              /* Make sure that IRQ work is really initialized. */
 -              smp_rmb();
 +      if (printk_safe_irq_ready)
                irq_work_queue(&s->work);
 -      }
  }
  
  /*
@@@ -72,7 -75,7 +72,7 @@@
   * have dedicated buffers, because otherwise printk-safe preempted by
   * NMI-printk would have overwritten the NMI messages.
   *
-  * The messages are fushed from irq work (or from panic()), possibly,
+  * The messages are flushed from irq work (or from panic()), possibly,
   * from other CPU, concurrently with printk_safe_log_store(). Should this
   * happen, printk_safe_log_store() will notice the buffer->len mismatch
   * and repeat the write.
@@@ -395,12 -398,8 +395,12 @@@ void __init printk_safe_init(void
  #endif
        }
  
 -      /* Make sure that IRQ works are initialized before enabling. */
 -      smp_wmb();
 +      /*
 +       * In the highly unlikely event that a NMI were to trigger at
 +       * this moment. Make sure IRQ work is set up before this
 +       * variable is set.
 +       */
 +      barrier();
        printk_safe_irq_ready = 1;
  
        /* Flush pending messages that did not have scheduled IRQ works. */