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

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