• Jisheng Zhang's avatar
    riscv: stacktrace: pin the task's stack in get_wchan · 76f5dfac
    Jisheng Zhang authored
    Pin the task's stack before calling walk_stackframe() in get_wchan().
    This can fix the panic as reported by Andreas when CONFIG_VMAP_STACK=y:
    
    [   65.609696] Unable to handle kernel paging request at virtual address ffffffd0003bbde8
    [   65.610460] Oops [#1]
    [   65.610626] Modules linked in: virtio_blk virtio_mmio rtc_goldfish btrfs blake2b_generic libcrc32c xor raid6_pq sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua efivarfs
    [   65.611670] CPU: 2 PID: 1 Comm: systemd Not tainted 5.14.0-rc1-1.g34fe32a-default #1 openSUSE Tumbleweed (unreleased) c62f7109153e5a0897ee58ba52393ad99b070fd2
    [   65.612334] Hardware name: riscv-virtio,qemu (DT)
    [   65.613008] epc : get_wchan+0x5c/0x88
    [   65.613334]  ra : get_wchan+0x42/0x88
    [   65.613625] epc : ffffffff800048a4 ra : ffffffff8000488a sp : ffffffd00021bb90
    [   65.614008]  gp : ffffffff817709f8 tp : ffffffe07fe91b80 t0 : 00000000000001f8
    [   65.614411]  t1 : 0000000000020000 t2 : 0000000000000000 s0 ...
    76f5dfac
stacktrace.c 3.43 KB