All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Ogness <john.ogness@linutronix.de>
To: Petr Mladek <pmladek@suse.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org, Miguel Ojeda <ojeda@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Paul E . McKenney" <paulmck@kernel.org>
Subject: Re: [PATCH printk v4 03/39] printk: Prepare for SRCU console list protection
Date: Tue, 15 Nov 2022 12:39:18 +0106	[thread overview]
Message-ID: <875yfgo3k1.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <Y3Nu+Bd/SWsYn8Sp@alley>

On 2022-11-15, Petr Mladek <pmladek@suse.com> wrote:
> On Mon 2022-11-14 17:34:56, John Ogness wrote:
>> Provide an NMI-safe SRCU protected variant to walk the console list.
>> 
>> Note that all console fields are now set before adding the console
>> to the list to avoid the console becoming visible by SCRU readers
>> before being fully initialized.
>> 
>> This is a preparatory change for a new console infrastructure which
>> operates independent of the console BKL.
>> 
>> --- a/kernel/printk/printk.c
>> +++ b/kernel/printk/printk.c
>> @@ -3254,7 +3303,7 @@ int unregister_console(struct console *console)
>>  		return -ENODEV;
>>  	}
>>  
>> -	hlist_del_init(&console->node);
>> +	hlist_del_init_rcu(&console->node);
>
> This should be hlist_del_rcu() here so that a list walker that it just
> processing this console could see the rest of the list.

hlist_del_init_rcu() does not prevent the rest of the list from being
seen. It only unlinks @pprev for future iterators.

> It seems that hlist_unhashed() checks only node.pprev pointer
> so that we even do not need to initialize it.
>
> We discussed this in v3 in the patch implementing
> console_force_preferred_locked(), see
> https://lore.kernel.org/r/Y20aBwNWT19YDeib@alley.
> I forgot that unregister_console() might have the same problem.

For console_force_preferred_locked() it was about making sure that the
console always appears registered, even though it is temporarily removed
from the console list.

For unregister_console() we want it to be seen as removed from the
console list.

John

  reply	other threads:[~2022-11-15 11:34 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-14 16:28 [PATCH printk v4 00/39] reduce console_lock scope John Ogness
2022-11-14 16:28 ` John Ogness
2022-11-14 16:28 ` John Ogness
2022-11-14 16:28 ` John Ogness
2022-11-14 16:28 ` [PATCH printk v4 01/39] serial: kgdboc: Lock console list in probe function John Ogness
2022-11-14 16:28 ` [PATCH printk v4 02/39] printk: Convert console_drivers list to hlist John Ogness
2022-11-14 16:28 ` [PATCH printk v4 03/39] printk: Prepare for SRCU console list protection John Ogness
2022-11-15 10:50   ` Petr Mladek
2022-11-15 11:33     ` John Ogness [this message]
2022-11-15 12:03       ` Petr Mladek
2022-11-14 16:28 ` [PATCH printk v4 04/39] printk: register_console: use "registered" for variable names John Ogness
2022-11-15 11:01   ` Petr Mladek
2022-11-14 16:28 ` [PATCH printk v4 05/39] printk: fix setting first seq for consoles John Ogness
2022-11-15 12:04   ` Petr Mladek
2022-11-14 16:28 ` [PATCH printk v4 06/39] um: kmsg_dump: only dump when no output console available John Ogness
2022-11-14 16:28   ` John Ogness
2022-11-14 16:29 ` [PATCH printk v4 07/39] tty: serial: kgdboc: document console_lock usage John Ogness
2022-11-14 16:29 ` [PATCH printk v4 08/39] tty: tty_io: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 09/39] proc: consoles: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 10/39] printk: introduce console_list_lock John Ogness
2022-11-14 16:29 ` [PATCH printk v4 11/39] console: introduce wrappers to read/write console flags John Ogness
2022-11-15 12:26   ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 12/39] um: kmsg_dumper: use srcu console list iterator John Ogness
2022-11-14 16:29   ` John Ogness
2022-11-14 16:29 ` [PATCH printk v4 13/39] kdb: " John Ogness
2022-11-14 21:16   ` Aaron Tomlin
2022-11-14 16:29 ` [PATCH printk v4 14/39] printk: console_flush_all: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 15/39] printk: __pr_flush: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 16/39] printk: console_is_usable: use console_srcu_read_flags John Ogness
2022-11-15 12:47   ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 17/39] printk: console_unblank: use srcu console list iterator John Ogness
2022-11-14 16:29 ` [PATCH printk v4 18/39] printk: console_flush_on_panic: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 19/39] printk: console_device: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 20/39] console: introduce console_is_registered() John Ogness
2022-11-14 16:29 ` [PATCH printk v4 21/39] serial_core: replace uart_console_enabled() with uart_console_registered() John Ogness
2022-11-14 16:29 ` [PATCH printk v4 22/39] tty: nfcon: use console_is_registered() John Ogness
2022-11-15 13:08   ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 23/39] efi: earlycon: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 24/39] tty: hvc: " John Ogness
2022-11-14 16:29   ` John Ogness
2022-11-14 16:29 ` [PATCH printk v4 25/39] tty: serial: earlycon: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 26/39] tty: serial: pic32_uart: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 27/39] tty: serial: samsung_tty: " John Ogness
2022-11-14 16:29   ` John Ogness
2022-11-14 16:29 ` [PATCH printk v4 28/39] tty: serial: xilinx_uartps: " John Ogness
2022-11-14 16:29   ` John Ogness
2022-11-14 16:29 ` [PATCH printk v4 29/39] usb: early: xhci-dbc: " John Ogness
2022-11-14 16:29 ` [PATCH printk v4 30/39] netconsole: avoid CON_ENABLED misuse to track registration John Ogness
2022-11-14 16:29 ` [PATCH printk v4 31/39] printk, xen: fbfront: create/use safe function for forcing preferred John Ogness
2022-11-14 16:29   ` John Ogness
2022-11-14 19:51   ` John Ogness
2022-11-14 19:51     ` John Ogness
2022-11-15 13:22     ` Petr Mladek
2022-11-15 13:22       ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 32/39] tty: tty_io: use console_list_lock for list synchronization John Ogness
2022-11-14 16:29 ` [PATCH printk v4 33/39] proc: consoles: use console_list_lock for list iteration John Ogness
2022-11-14 16:29 ` [PATCH printk v4 34/39] tty: serial: kgdboc: use srcu console list iterator John Ogness
2022-11-15 15:17   ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 35/39] tty: serial: kgdboc: use console_list_lock for list traversal John Ogness
2022-11-15 15:18   ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 36/39] tty: serial: kgdboc: synchronize tty_find_polling_driver() and register_console() John Ogness
2022-11-14 16:29 ` [PATCH printk v4 37/39] tty: serial: kgdboc: use console_list_lock to trap exit John Ogness
2022-11-14 16:29 ` [PATCH printk v4 38/39] printk: relieve console_lock of list synchronization duties John Ogness
2022-11-15 15:34   ` replay log: " Petr Mladek
2022-11-15 16:41     ` John Ogness
2022-11-15 18:23       ` Petr Mladek
2022-11-16  8:52         ` John Ogness
2022-11-16  8:56           ` John Ogness
2022-11-16  9:08             ` John Ogness
2022-11-16  9:48               ` Petr Mladek
2022-11-15 16:41     ` Petr Mladek
2022-11-15 17:15       ` John Ogness
2022-11-15 18:36         ` Petr Mladek
2022-11-14 16:29 ` [PATCH printk v4 39/39] tty: serial: sh-sci: use setup() callback for early console John Ogness
2022-11-15 16:43   ` Petr Mladek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875yfgo3k1.fsf@jogness.linutronix.de \
    --to=john.ogness@linutronix.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.