]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: qla2xxx: Fix recursive mailbox timeout
authorQuinn Tran <quinn.tran@cavium.com>
Thu, 27 Sep 2018 05:05:16 +0000 (22:05 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 28 Sep 2018 00:15:05 +0000 (20:15 -0400)
This patch prevents user space mailbox request from doing chip reset if the
mailbox timed out. The chip reset is only reserved for the DPC thread to
ensure all mailbox requests are flushed properly. The DPC thread is
responsible for the flushing all MBs and chip reset.

Fixes: b2000805a975 ("scsi: qla2xxx: Flush mailbox commands on chip reset")
Cc: <stable@ger.kernel.org>
Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_mbx.c

index e016ee9c6d8e3d9a5a7c53c338ffdf3a8c4edafa..bd8c86aeccc27ad2b06afe199504e753fe39af5b 100644 (file)
@@ -518,7 +518,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
                                set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
                                qla2xxx_wake_dpc(vha);
                        }
-               } else if (!abort_active) {
+               } else if (current == ha->dpc_thread) {
                        /* call abort directly since we are in the DPC thread */
                        ql_dbg(ql_dbg_mbx, vha, 0x101d,
                            "Timeout, calling abort_isp.\n");