On Wed 19-04-23 09:42:10, Petr Mladek wrote: > The comment above printk_deferred_enter()/exit() definition claims > that it can be used only when interrupts are disabled. > > It was required by the original printk_safe_log_store() implementation. > The code provided lockless synchronization between a single writer and > a single reader. The interrupt and the normal context shared the same > buffer. > > The commit 93d102f094be ("printk: remove safe buffers") removed > these temporary buffers. Instead, the messages are stored directly into > the new global lockless buffer which supports multiple parallel writers. > > As a result, it is safe to interrupt one writer now. The preemption still > has to be disabled because the deferred context is CPU specific. Thanks for the clarification and explanation. > Fixes: 93d102f094be ("printk: remove safe buffers") Is this a fix though? I would expect some users to be changed from irq to preempt to disabling to be considered a fix. > Signed-off-by: Petr Mladek <pmladek@xxxxxxxx> > --- > include/linux/printk.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 8ef499ab3c1e..915a321b491e 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -161,7 +161,7 @@ extern void __printk_safe_enter(void); > extern void __printk_safe_exit(void); > /* > * The printk_deferred_enter/exit macros are available only as a hack for > - * some code paths that need to defer all printk console printing. Interrupts > + * some code paths that need to defer all printk console printing. Preemption > * must be disabled for the deferred duration. > */ > #define printk_deferred_enter __printk_safe_enter > -- > 2.35.3 -- Michal Hocko SUSE Labs