Skip to content

Commit

Permalink
Fix invalid structure size error during crash startup on ppc64
Browse files Browse the repository at this point in the history
The crash utility will fail to start session on ppc64 with the following
error:

  # crash vmlinux vmcore -s

  crash: invalid structure size: note_buf
         FILE: diskdump.c  LINE: 121  FUNCTION: have_crash_notes()

  [./crash] error trace: 101859ac => 10291798 => 10291450 => 10266038

    10266038: SIZE_verify+156
    10291450: have_crash_notes+308
    10291798: map_cpus_to_prstatus_kdump_cmprs+448
    101859ac: task_init+11980

The reason is that the size of note_buf is not initialized before using
SIZE(note_buf) in the have_crash_notes() on some architectures including
ppc64.  Let's initialize it in task_init() to fix this issue.

Fixes: db8c030 ("diskdump/netdump: fix segmentation fault caused by failure of stopping CPUs")
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
  • Loading branch information
lian-bo authored and k-hagio committed Jun 13, 2023
1 parent 77d8621 commit ec1e61b
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions task.c
Expand Up @@ -675,6 +675,9 @@ task_init(void)
tt->this_task = pid_to_task(active_pid);
}
else {
if (INVALID_SIZE(note_buf))
STRUCT_SIZE_INIT(note_buf, "note_buf_t");

if (KDUMP_DUMPFILE())
map_cpus_to_prstatus();
else if (ELF_NOTES_VALID() && DISKDUMP_DUMPFILE())
Expand Down

0 comments on commit ec1e61b

Please sign in to comment.