printk: console_is_usable: use console_srcu_read_flags
authorJohn Ogness <john.ogness@linutronix.de>
Wed, 16 Nov 2022 16:21:29 +0000 (17:27 +0106)
committerPetr Mladek <pmladek@suse.com>
Fri, 2 Dec 2022 10:25:00 +0000 (11:25 +0100)
All users of console_is_usable() are SRCU iterators. Use the
appropriate wrapper function to locklessly read the flags.

Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20221116162152.193147-18-john.ogness@linutronix.de
kernel/printk/printk.c

index abdbd3ffb06848762e5858eda460e6a8d8516684..853a86c94ee088a2eb08d275640ebfe4bf459644 100644 (file)
@@ -2709,11 +2709,13 @@ static bool abandon_console_lock_in_panic(void)
  * Check if the given console is currently capable and allowed to print
  * records.
  *
- * Requires the console_lock.
+ * Requires the console_srcu_read_lock.
  */
 static inline bool console_is_usable(struct console *con)
 {
-       if (!(con->flags & CON_ENABLED))
+       short flags = console_srcu_read_flags(con);
+
+       if (!(flags & CON_ENABLED))
                return false;
 
        if (!con->write)
@@ -2724,8 +2726,7 @@ static inline bool console_is_usable(struct console *con)
         * allocated. So unless they're explicitly marked as being able to
         * cope (CON_ANYTIME) don't call them until this CPU is officially up.
         */
-       if (!cpu_online(raw_smp_processor_id()) &&
-           !(con->flags & CON_ANYTIME))
+       if (!cpu_online(raw_smp_processor_id()) && !(flags & CON_ANYTIME))
                return false;
 
        return true;