• Nilesh Javali's avatar
    scsi: qla2xxx: Perform lockless command completion in abort path · 0367076b
    Nilesh Javali authored
    While adding and removing the controller, the following call trace was
    observed:
    
    WARNING: CPU: 3 PID: 623596 at kernel/dma/mapping.c:532 dma_free_attrs+0x33/0x50
    CPU: 3 PID: 623596 Comm: sh Kdump: loaded Not tainted 5.14.0-96.el9.x86_64 #1
    RIP: 0010:dma_free_attrs+0x33/0x50
    
    Call Trace:
       qla2x00_async_sns_sp_done+0x107/0x1b0 [qla2xxx]
       qla2x00_abort_srb+0x8e/0x250 [qla2xxx]
       ? ql_dbg+0x70/0x100 [qla2xxx]
       __qla2x00_abort_all_cmds+0x108/0x190 [qla2xxx]
       qla2x00_abort_all_cmds+0x24/0x70 [qla2xxx]
       qla2x00_abort_isp_cleanup+0x305/0x3e0 [qla2xxx]
       qla2x00_remove_one+0x364/0x400 [qla2xxx]
       pci_device_remove+0x36/0xa0
       __device_release_driver+0x17a/0x230
       device_release_driver+0x24/0x30
       pci_stop_bus_device+0x68/0x90
       pci_stop_and_remove_bus_device_locked+0x16/0x30
       remove_store+0x75/0x90
       kernfs_fop_write_iter+0x11c/0x1b0
       new_sync_write+0x11f/0x1b0
       vfs_write+0x1eb/0x280
       ksys_write+0x5f/0xe0
       do_syscall_64+0x5c/0x80
       ? do_user_addr_fault+0x1d8/0x680
       ? do_syscall_64+0x69/0x80
       ? exc_page_fault+0x62/0x140
       ? asm_exc_page_fault+0x8/0x30
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The command was completed in the abort path during driver unload with a
    lock held, causing the warning in abort path. Hence complete the command
    without any lock held.
    Reported-by: default avatarLin Li <lilin@redhat.com>
    Tested-by: default avatarLin Li <lilin@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarNilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20230313043711.13500-2-njavali@marvell.comReviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
    Reviewed-by: default avatarJohn Meneghini <jmeneghi@redhat.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    0367076b
qla_os.c 232 KB