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

tty: serial: kgdboc: use console_list_lock for list traversal



configure_kgdboc() uses the console_lock for console list iteration. Use
the console_list_lock instead because list synchronization responsibility
will be removed from the console_lock in a later change.

The SRCU iterator could have been used here, but a later change will
relocate the locking of the console_list_lock to also provide
synchronization against register_console().

Note, the console_lock is still needed to serialize the device()
callback with other console operations.

Signed-off-by: default avatarJohn Ogness <john.ogness@linutronix.de>
Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20221116162152.193147-37-john.ogness@linutronix.de
parent 7e537af9
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -193,7 +193,16 @@ static int configure_kgdboc(void)
	if (!p)
		goto noconfig;

	/* For safe traversal of the console list. */
	console_list_lock();

	/*
	 * 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(cons) {
		int idx;
		if (cons->device && cons->device(cons, &idx) == p &&
@@ -202,8 +211,11 @@ static int configure_kgdboc(void)
			break;
		}
	}

	console_unlock();

	console_list_unlock();

	kgdb_tty_driver = p;
	kgdb_tty_line = tty_line;