scsi: bnx2fc: Check for connection offload before sending RRQ.
authorChad Dupuis <chad.dupuis@cavium.com>
Mon, 26 Jun 2017 15:59:33 +0000 (08:59 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 28 Jun 2017 01:39:09 +0000 (21:39 -0400)
If the connection is not offloaded then the backpointers from the tgt
pointer are undefined.

Signed-off-by: Chad Dupuis <chad.dupuis@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/bnx2fc/bnx2fc_els.c

index 68ca518d34b01930ccdc1af052adcf858604d897..fee12c3d67cd6019c15eba9b3be3454c53f52628 100644 (file)
@@ -61,13 +61,20 @@ int bnx2fc_send_rrq(struct bnx2fc_cmd *aborted_io_req)
 
        struct fc_els_rrq rrq;
        struct bnx2fc_rport *tgt = aborted_io_req->tgt;
-       struct fc_lport *lport = tgt->rdata->local_port;
+       struct fc_lport *lport = NULL;
        struct bnx2fc_els_cb_arg *cb_arg = NULL;
-       u32 sid = tgt->sid;
-       u32 r_a_tov = lport->r_a_tov;
+       u32 sid = 0;
+       u32 r_a_tov = 0;
        unsigned long start = jiffies;
        int rc;
 
+       if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags))
+               return -EINVAL;
+
+       lport = tgt->rdata->local_port;
+       sid = tgt->sid;
+       r_a_tov = lport->r_a_tov;
+
        BNX2FC_ELS_DBG("Sending RRQ orig_xid = 0x%x\n",
                   aborted_io_req->xid);
        memset(&rrq, 0, sizeof(rrq));