summaryrefslogtreecommitdiff
path: root/drivers/scsi
diff options
context:
space:
mode:
authorYi Zou <yi.zou@intel.com>2012-07-06 10:40:26 -0700
committerJames Bottomley <JBottomley@Parallels.com>2012-07-20 08:58:56 +0100
commitdb95fc004ea50f661a98c9f25585c0a734b5c238 (patch)
treea067a9c856130f035f3fff0de932e2dc66d25eaa /drivers/scsi
parent95fdd5e980e6eea4579c15043f7a9be6ad63012c (diff)
downloadlinux-3.10-db95fc004ea50f661a98c9f25585c0a734b5c238.tar.gz
linux-3.10-db95fc004ea50f661a98c9f25585c0a734b5c238.tar.bz2
linux-3.10-db95fc004ea50f661a98c9f25585c0a734b5c238.zip
[SCSI] libfc: don't exch_done() on invalid sequence ptr
The lport_recv(), i.e., fc_lport_recv_req() may get called w/o the sequence ptr being set in fr_seq(), particularly in the case of vn2vn mode, this may happen if the passive fcp provider, e.g., tcm_fc, has not been registered yet. Signed-off-by: Yi Zou <yi.zou@intel.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/libfc/fc_lport.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index ca278d4b0f6..d385d114788 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -980,7 +980,8 @@ drop:
rcu_read_unlock();
FC_LPORT_DBG(lport, "dropping unexpected frame type %x\n", fh->fh_type);
fc_frame_free(fp);
- lport->tt.exch_done(sp);
+ if (sp)
+ lport->tt.exch_done(sp);
}
/**