• Christophe Leroy's avatar
    panic: don't dump stack twice on warn · 2f31ad64
    Christophe Leroy authored
    Before commit 3f388f28 ("panic: dump registers on panic_on_warn"),
    __warn() was calling show_regs() when regs was not NULL, and show_stack()
    otherwise.
    
    After that commit, show_stack() is called regardless of whether
    show_regs() has been called or not, leading to duplicated Call Trace:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1 at arch/powerpc/mm/nohash/8xx.c:186 mmu_mark_initmem_nx+0x24/0x94
      CPU: 0 PID: 1 Comm: swapper Not tainted 5.10.0-rc2-s3k-dev-01375-gf46ec0d3ecbd-dirty #4092
      NIP:  c00128b4 LR: c0010228 CTR: 00000000
      REGS: c9023e40 TRAP: 0700   Not tainted  (5.10.0-rc2-s3k-dev-01375-gf46ec0d3ecbd-dirty)
      MSR:  00029032 <EE,ME,IR,DR,RI>  CR: 24000424  XER: 00000000
    
      GPR00: c0010228 c9023ef8 c2100000 0074c000 ffffffff 00000000 c2151000 c07b3880
      GPR08: ff000900 0074c000 c8000000 c33b53a8 24000822 00000000 c0003a20 00000000
      GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      GPR24: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00800000
      NIP [c00128b4] mmu_mark_initmem_nx+0x24/0x94
      LR [c0010228] free_initmem+0x20/0x58
      Call Trace:
        free_initmem+0x20/0x58
        kernel_init+0x1c/0x114
        ret_from_kernel_thread+0x14/0x1c
      Instruction dump:
      7d291850 7d234b78 4e800020 9421ffe0 7c0802a6 bfc10018 3fe0c060 3bff0000
      3fff4080 3bffffff 90010024 57ff0010 <0fe00000> 392001cd 7c3e0b78 953e0008
      CPU: 0 PID: 1 Comm: swapper Not tainted 5.10.0-rc2-s3k-dev-01375-gf46ec0d3ecbd-dirty #4092
      Call Trace:
        __warn+0x8c/0xd8 (unreliable)
        report_bug+0x11c/0x154
        program_check_exception+0x1dc/0x6e0
        ret_from_except_full+0x0/0x4
      --- interrupt: 700 at mmu_mark_initmem_nx+0x24/0x94
          LR = free_initmem+0x20/0x58
        free_initmem+0x20/0x58
        kernel_init+0x1c/0x114
        ret_from_kernel_thread+0x14/0x1c
      ---[ end trace 31702cd2a9570752 ]---
    
    Only call show_stack() when regs is NULL.
    
    Fixes: 3f388f28
    
     ("panic: dump registers on panic_on_warn")
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Link: https://lkml.kernel.org/r/e8c055458b080707f1bc1a98ff8bea79d0cec445.1604748361.git.christophe.leroy@csgroup.eu
    
    
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    2f31ad64