• Justin Tee's avatar
    scsi: lpfc: Fix hard lockup when reading the rx_monitor from debugfs · c44e50f4
    Justin Tee authored
    During I/O and simultaneous cat of /sys/kernel/debug/lpfc/fnX/rx_monitor, a
    hard lockup similar to the call trace below may occur.
    
    The spin_lock_bh in lpfc_rx_monitor_report is not protecting from timer
    interrupts as expected, so change the strength of the spin lock to _irq.
    
    Kernel panic - not syncing: Hard LOCKUP
    CPU: 3 PID: 110402 Comm: cat Kdump: loaded
    
    exception RIP: native_queued_spin_lock_slowpath+91
    
    [IRQ stack]
     native_queued_spin_lock_slowpath at ffffffffb814e30b
     _raw_spin_lock at ffffffffb89a667a
     lpfc_rx_monitor_record at ffffffffc0a73a36 [lpfc]
     lpfc_cmf_timer at ffffffffc0abbc67 [lpfc]
     __hrtimer_run_queues at ffffffffb8184250
     hrtimer_interrupt at ffffffffb8184ab0
     smp_apic_timer_interrupt at ffffffffb8a026ba
     apic_timer_interrupt at ffffffffb8a01c4f
    [End of IRQ stack]
    
     apic_timer_interrupt at ffffffffb8a01c4f
     lpfc_rx_monitor_report at ffffffffc0a73c80 [lpfc]
     lpfc_rx_monitor_read at ffffffffc0addde1 [lpfc]
     full_proxy_read at ffffffffb83e7fc3
     vfs_read at ffffffffb833fe71
     ksys_read at ffffffffb83402af
     do_syscall_64 at ffffffffb800430b
     entry_SYSCALL_64_after_hwframe at ffffffffb8a000ad
    Signed-off-by: default avatarJustin Tee <justin.tee@broadcom.com>
    Link: https://lore.kernel.org/r/20221017164323.14536-2-justintee8345@gmail.comSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    c44e50f4
lpfc_sli.c 680 KB