Commit 12335446 authored by John Ogness's avatar John Ogness Committed by Petr Mladek
Browse files

um: kmsg_dumper: use srcu console list iterator



Rather than using the console_lock to guarantee safe console list
traversal, use srcu console list iteration.

Signed-off-by: default avatarJohn Ogness <john.ogness@linutronix.de>
Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20221116162152.193147-14-john.ogness@linutronix.de
parent 100bdef2
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -16,29 +16,26 @@ static void kmsg_dumper_stdout(struct kmsg_dumper *dumper,
	struct console *con;
	unsigned long flags;
	size_t len = 0;
	int cookie;

	/*
	 * If no consoles are available to output crash information, dump
	 * the kmsg buffer to stdout.
	 */

	if (!console_trylock())
		return;

	for_each_console(con) {
	cookie = console_srcu_read_lock();
	for_each_console_srcu(con) {
		/*
		 * The ttynull console and disabled consoles are ignored
		 * since they cannot output. All other consoles are
		 * expected to output the crash information.
		 */
		if (strcmp(con->name, "ttynull") != 0 &&
		    (con->flags & CON_ENABLED)) {
		    (console_srcu_read_flags(con) & CON_ENABLED)) {
			break;
		}
	}

	console_unlock();

	console_srcu_read_unlock(cookie);
	if (con)
		return;