• Petr Mladek's avatar
    lib/nmi_backtrace: Serialize even messages about idle CPUs · 26d1982f
    Petr Mladek authored
    The commit 55d6af1d ("lib/nmi_backtrace: explicitly serialize
    banner and regs") serialized backtraces from more CPUs using the re-entrant
    printk_printk_cpu lock. It was a preparation step for removing the obsolete
    nmi_safe buffers.
    
    The single-line messages about idle CPUs were not serialized against other
    CPUs and might appear in the middle of backtrace from another CPU,
    for example:
    
    [56394.590068] NMI backtrace for cpu 2
    [56394.590069] CPU: 2 PID: 444 Comm: systemd-journal Not tainted 5.14.0-rc1-default+ #268
    [56394.590071] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba527-rebuilt.opensuse.org 04/01/2014
    [56394.590072] RIP: 0010:lock_is_held_type+0x0/0x120
    [56394.590071] NMI backtrace for cpu 0 skipped: idling at native_safe_halt+0xb/0x10
    [56394.590076] Code: a2 38 ff 0f 0b 8b 44 24 04 eb bd 48 8d ...
    [56394.590077] RSP: 0018:ffffab02c07c7e68 EFLAGS: 00000246
    [56394.590079] RAX: 0000000000000000 RBX: ffff9a7bc0ec8a40 RCX: ffffffffaab8eb40
    
    It might cause confusion what CPU the following lines belongs to and
    whether the backtraces are really serialized.
    
    Prevent the confusion and serialize also the single line message against
    other CPUs.
    
    Fixes: 55d6af1d ("lib/nmi_backtrace: explicitly serialize banner and regs")
    Reviewed-by: default avatarJohn Ogness <john.ogness@linutronix.de>
    Reviewed-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210727080939.27193-1-pmladek@suse.com
    26d1982f
nmi_backtrace.c 3.15 KB