Blame SOURCES/0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch

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