[PATCH] arm64: Fix segfault by "bt" command with offline cpus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently on arm64, NT_PRSTATUS notes in dumpfile are not mapped to
online cpus and machine_specific->panic_task_regs correctly.  As a
result, the "bt" command can cause a segmentation fault.

  crash> bt -c 0
  PID: 0      TASK: ffff8000117fa240  CPU: 0   COMMAND: "swapper/0"
  Segmentation fault (core dumped)

To fix this,
1) make map_cpus_to_prstatus_kdump_cmprs() map the notes to
   dd->nt_prstatus_percpu also on arm64, and
2) move arm64_get_crash_notes() to machdep_init(POST_INIT) in order
   to apply the mapping to machine_specific->panic_task_regs.

Resolves: https://github.com/crash-utility/crash/issues/105
Reported-by: xuchunmei000 <xuchunmei@xxxxxxxxxxxxxxxxx>
Signed-off-by: Kazuhito Hagio <k-hagio-ab@xxxxxxx>
---
Note: I suspect that the machine_type("ARM64") in commit 9b41d403b16c might
be placed for debugging and contained in the commit by accident.  Because
that segfault could be caused by the uninitialized machdep->process_elf_notes.

 arm64.c    | 2 +-
 diskdump.c | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/arm64.c b/arm64.c
index 23c3d75d85aa..4f2c2b5104a1 100644
--- a/arm64.c
+++ b/arm64.c
@@ -472,7 +472,7 @@ arm64_init(int when)
 		arm64_stackframe_init();
 		break;
 
-	case POST_VM:
+	case POST_INIT:
 		/*
 		 * crash_notes contains machine specific information about the
 		 * crash. In particular, it contains CPU registers at the time
diff --git a/diskdump.c b/diskdump.c
index 3e1cfd548c96..d5674276e1fd 100644
--- a/diskdump.c
+++ b/diskdump.c
@@ -111,8 +111,7 @@ map_cpus_to_prstatus_kdump_cmprs(void)
 	if (pc->flags2 & QEMU_MEM_DUMP_COMPRESSED)  /* notes exist for all cpus */
 		goto resize_note_pointers;
 
-	if (!(online = get_cpus_online()) || (online == kt->cpus) || 
-	    machine_type("ARM64"))
+	if (!(online = get_cpus_online()) || (online == kt->cpus))
 		goto resize_note_pointers;
 
 	if (CRASHDEBUG(1))
-- 
2.27.0


--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux