summaryrefslogtreecommitdiff
path: root/include/scsi
diff options
context:
space:
mode:
authorRobert Love <robert.w.love@intel.com>2009-02-27 10:55:34 -0800
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-03-06 15:44:36 -0600
commitefaf5c085dd2d31757b0ff7886970dfddd8d1808 (patch)
treec88ab287ed1b78ecad88370c1c8929f17f13c271 /include/scsi
parentd3b33327cab0c8e9cae2c12d908ca79433c0d1ac (diff)
downloadlinux-3.10-efaf5c085dd2d31757b0ff7886970dfddd8d1808.tar.gz
linux-3.10-efaf5c085dd2d31757b0ff7886970dfddd8d1808.tar.bz2
linux-3.10-efaf5c085dd2d31757b0ff7886970dfddd8d1808.zip
[SCSI] libfc: check for err when recv and state is incorrect
If we've just created an interface and the an rport is logging in we may have a request on the wire (say PRLI). If we destroy the interface, we'll go through each rport on the disc->rports list and set each rport's state to NONE. Then the lport will reset the EM. The EM reset will send a CLOSED event to the prli_resp() handler which will notice that the state != PRLI. In this case it frees the frame pointer, decrements the refcount and unlocks the rport. The problem is that there isn't a frame in this case. It's just a pointer with an embedded error code. The free causes an Oops. This patch moves the error checking to be before the state checking. Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi')
0 files changed, 0 insertions, 0 deletions