scsi: qla2xxx: Fix crash on qla2x00_mailbox_command
authorRodrigo R. Galvao <rosattig@linux.vnet.ibm.com>
Mon, 28 May 2018 17:58:44 +0000 (14:58 -0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 8 Jun 2018 01:50:00 +0000 (21:50 -0400)
This patch fixes a crash on qla2x00_mailbox_command caused when the driver
is on UNLOADING state and tries to call qla2x00_poll, which triggers a
NULL pointer dereference.

Signed-off-by: Rodrigo R. Galvao <rosattig@linux.vnet.ibm.com>
Signed-off-by: Mauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>
Acked-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_mbx.c

index d8a36c13aedaf8606a4931287bb2879aee23dcae..7e875f5752299bdb6af02e542ba90362a399a5c7 100644 (file)
@@ -292,6 +292,14 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
                        if (time_after(jiffies, wait_time))
                                break;
 
+                       /*
+                        * Check if it's UNLOADING, cause we cannot poll in
+                        * this case, or else a NULL pointer dereference
+                        * is triggered.
+                        */
+                       if (unlikely(test_bit(UNLOADING, &base_vha->dpc_flags)))
+                               return QLA_FUNCTION_TIMEOUT;
+
                        /* Check for pending interrupts. */
                        qla2x00_poll(ha->rsp_q_map[0]);