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: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20221116162152.193147-37-john.ogness@linutronix.de
This commit is contained in:
parent
7e537af997
commit
6685744369
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user