tty: tty_io: document console_lock usage
authorJohn Ogness <john.ogness@linutronix.de>
Wed, 16 Nov 2022 16:21:21 +0000 (17:27 +0106)
committerPetr Mladek <pmladek@suse.com>
Fri, 2 Dec 2022 10:25:00 +0000 (11:25 +0100)
show_cons_active() uses the console_lock to gather information
on registered consoles. Since the console_lock is being used for
multiple reasons, explicitly document these reasons. This will
be useful when the console_lock is split into fine-grained
locking.

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-10-john.ogness@linutronix.de
drivers/tty/tty_io.c

index de06c3c2ff70ac79a7bd5dff790611534d3f2da6..ee4da2fec3285054ae9836b4d87e71a3d6884026 100644 (file)
@@ -3526,6 +3526,16 @@ static ssize_t show_cons_active(struct device *dev,
        struct console *c;
        ssize_t count = 0;
 
+       /*
+        * Hold the console_lock to guarantee that no consoles are
+        * unregistered until all console processing is complete.
+        * This also allows safe traversal of the console list and
+        * race-free reading of @flags.
+        *
+        * Take console_lock to serialize device() callback with
+        * other console operations. For example, fg_console is
+        * modified under console_lock when switching vt.
+        */
        console_lock();
        for_each_console(c) {
                if (!c->device)