79 lines
3.5 KiB
Diff
79 lines
3.5 KiB
Diff
From cce90e242f74ab81e411f2f65f5d5a9fb5022416 Mon Sep 17 00:00:00 2001
|
|
From: Lianbo Jiang <lijiang@redhat.com>
|
|
Date: Wed, 15 Feb 2023 16:24:57 +0800
|
|
Subject: [PATCH 75/89] Fix for "bt" command unnecessarily printing an
|
|
exception frame
|
|
|
|
Kernel commit 7d65f4a65532 ("irq: Consolidate do_softirq() arch overriden
|
|
implementations") renamed the call_softirq to do_softirq_own_stack, and
|
|
there is no exception frame also when coming from do_softirq_own_stack.
|
|
Without the patch, crash may unnecessarily output an exception frame with
|
|
a warning as below:
|
|
|
|
crash> foreach bt
|
|
...
|
|
PID: 0 TASK: ffff914f820a8000 CPU: 25 COMMAND: "swapper/25"
|
|
#0 [fffffe0000504e48] crash_nmi_callback at ffffffffa665d763
|
|
#1 [fffffe0000504e50] nmi_handle at ffffffffa662a423
|
|
#2 [fffffe0000504ea8] default_do_nmi at ffffffffa6fe7dc9
|
|
#3 [fffffe0000504ec8] do_nmi at ffffffffa662a97f
|
|
#4 [fffffe0000504ef0] end_repeat_nmi at ffffffffa70015e8
|
|
[exception RIP: clone_endio+172]
|
|
RIP: ffffffffc005c1ec RSP: ffffa1d403d08e98 RFLAGS: 00000246
|
|
RAX: 0000000000000000 RBX: ffff915326fba230 RCX: 0000000000000018
|
|
RDX: ffffffffc0075400 RSI: 0000000000000000 RDI: ffff915326fba230
|
|
RBP: ffff915326fba1c0 R8: 0000000000001000 R9: ffff915308d6d2a0
|
|
R10: 000000a97dfe5e10 R11: ffffa1d40038fe98 R12: ffff915302babc40
|
|
R13: ffff914f94360000 R14: 0000000000000000 R15: 0000000000000000
|
|
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
|
|
--- <NMI exception stack> ---
|
|
#5 [ffffa1d403d08e98] clone_endio at ffffffffc005c1ec [dm_mod]
|
|
#6 [ffffa1d403d08ed0] blk_update_request at ffffffffa6a96954
|
|
#7 [ffffa1d403d08f10] scsi_end_request at ffffffffa6c9b968
|
|
#8 [ffffa1d403d08f48] scsi_io_completion at ffffffffa6c9bb3e
|
|
#9 [ffffa1d403d08f90] blk_complete_reqs at ffffffffa6aa0e95
|
|
#10 [ffffa1d403d08fa0] __softirqentry_text_start at ffffffffa72000dc
|
|
#11 [ffffa1d403d08ff0] do_softirq_own_stack at ffffffffa7000f9a
|
|
--- <IRQ stack> ---
|
|
#12 [ffffa1d40038fe70] do_softirq_own_stack at ffffffffa7000f9a
|
|
[exception RIP: unknown or invalid address]
|
|
RIP: 0000000000000000 RSP: 0000000000000000 RFLAGS: 00000000
|
|
RAX: ffffffffa672eae5 RBX: ffffffffa83b34e0 RCX: ffffffffa672eb12
|
|
RDX: 0000000000000010 RSI: 8b7d6c8869010c00 RDI: 0000000000000085
|
|
RBP: 0000000000000286 R8: ffff914f820a8000 R9: ffffffffa67a94e0
|
|
R10: 0000000000000286 R11: ffffffffa66fb4c5 R12: ffffffffa67a898b
|
|
R13: 0000000000000000 R14: fffffffffffffff8 R15: ffffffffa67a1e68
|
|
ORIG_RAX: 0000000000000000 CS: 0000 SS: ffffffffa672edff
|
|
bt: WARNING: possibly bogus exception frame
|
|
#13 [ffffa1d40038ff30] start_secondary at ffffffffa665fa2c
|
|
#14 [ffffa1d40038ff50] secondary_startup_64_no_verify at ffffffffa6600116
|
|
...
|
|
|
|
Reported-by: Marco Patalano <mpatalan@redhat.com>
|
|
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
---
|
|
x86_64.c | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/x86_64.c b/x86_64.c
|
|
index 27b1167ec630..31c249699066 100644
|
|
--- a/x86_64.c
|
|
+++ b/x86_64.c
|
|
@@ -3822,10 +3822,11 @@ in_exception_stack:
|
|
up -= 1;
|
|
bt->instptr = *up;
|
|
/*
|
|
- * No exception frame when coming from call_softirq.
|
|
+ * No exception frame when coming from do_softirq_own_stack
|
|
+ * or call_softirq.
|
|
*/
|
|
if ((sp = value_search(bt->instptr, &offset)) &&
|
|
- STREQ(sp->name, "call_softirq"))
|
|
+ (STREQ(sp->name, "do_softirq_own_stack") || STREQ(sp->name, "call_softirq")))
|
|
irq_eframe = 0;
|
|
bt->frameptr = 0;
|
|
done = FALSE;
|
|
--
|
|
2.37.1
|
|
|