]> git.baikalelectronics.ru Git - kernel.git/commit
lib/nmi_backtrace: Serialize even messages about idle CPUs
authorPetr Mladek <pmladek@suse.com>
Tue, 27 Jul 2021 08:09:39 +0000 (10:09 +0200)
committerPetr Mladek <pmladek@suse.com>
Fri, 30 Jul 2021 07:25:34 +0000 (09:25 +0200)
commit1b840854070c9798b9259ec47993e88759c3e7ab
tree161675bef5e0c060a0962fca2abbb712e5f40a69
parent4e4fb8d1c0b9796947010d631fd28419daa5921e
lib/nmi_backtrace: Serialize even messages about idle CPUs

The commit a4ec2f17f0522a6e8089a ("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: a4ec2f17f0522a6e8089a ("lib/nmi_backtrace: explicitly serialize banner and regs")
Reviewed-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20210727080939.27193-1-pmladek@suse.com
lib/nmi_backtrace.c