[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>
This commit is contained in:
Yi Zou 2012-07-06 10:40:26 -07:00 committed by James Bottomley
parent 95fdd5e980
commit db95fc004e

View file

@ -980,7 +980,8 @@ static void fc_lport_recv_req(struct fc_lport *lport,
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);
}
/**