On 2022-06-24, Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: >> (gdb) list *vprintk_store+0x3cc >> 0xffffffff8114283c is in vprintk_store (kernel/printk/printk.c:2280). >> warning: Source file is more recent than executable. >> 2275 u32 caller_id; >> 2276 u16 text_len; >> 2277 int ret = 0; >> 2278 u64 ts_nsec; >> 2279 >> 2280 if (!printk_enter_irqsave(recursion_ptr, irqflags)) >> 2281 return 0; >> 2282 >> 2283 /* >> 2284 * Since the duration of printk() can vary depending on the message >> (gdb) > > Why do we need to keep interrupts disabled for vsnprintf()? vsnprintf is printing the current CPU local clock and the current CPU ID. Are you recommending we split printk_enter_irqsave() into various preempt_disable() and local_irq_save() calls? As to this the actual problem reported in this thread, I believe this patch solves it: https://lore.kernel.org/lkml/20220609121709.12939-1-Jason@xxxxxxxxx John Ogness