android_kernel_samsung_sm8650/drivers/scsi/libfc
Neerav Parikh c9d24a7618 [SCSI] libfc: Remove the reference to FCP packet from scsi_cmnd in case of error
fc_queuecommand() allocates an FCP packet for each SCSI command and sends
it out on the wire. In the process it stores the reference to the FCP packet
in the scsi_cmnd structure.
Now, in case under stress testing the libfc exchange layer runs out of
exchanges the fc_queuecommand() may not be able to send out commands out on
the wire. In such a scenario if there is an error in sending the FCP packet
out the wire; fc_queuecommand() deletes the FCP packet from internal queue,
releases the FCP packet and returns a SCSI_MLQUEUE_HOST_BUSY status to the
scsi-ml. But, the reference to the FCP packet set in the scsi_cmnd is not
removed from the scsi_cmnd in this code path.

This might lead to a crash under stress testing where the scsi_cmnd failed by
fc_queuecommand() comes up to fc_eh_abort() via scsi eh thread. fc_eh_abort()
will get reference to the FCP packet to be aborted from the scsi_cmnd for
further FCP abort related processing and then try to release the FCP packet
that has already been released.

This patch removes the FCP packet reference from the scsi_cmnd before returning
back from fc_queuecommand() in case of an error in sending out the FCP packet.

Signed-off-by: Neerav Parikh <Neerav.Parikh@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>
2011-07-28 12:13:15 +04:00
..
fc_disc.c [SCSI] libfc: fix mm leak in handling incoming request for target discovery 2011-05-24 12:36:41 -04:00
fc_elsct.c [SCSI] libfc: add fc_fill_reply_hdr() and fc_fill_hdr() 2010-07-28 09:06:00 -05:00
fc_exch.c [SCSI] libfc, fcoe: ignore rx frame with wrong xid info 2011-07-28 12:10:35 +04:00
fc_fcp.c [SCSI] libfc: Remove the reference to FCP packet from scsi_cmnd in case of error 2011-07-28 12:13:15 +04:00
fc_frame.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
fc_libfc.c [SCSI] libfc: Extending lport's roles for target if there is a registered target. 2011-02-12 11:08:22 -06:00
fc_libfc.h [SCSI] libfc: release DDP context if frame_send() fails 2011-05-24 12:36:51 -04:00
fc_lport.c [SCSI] libfc: post reset event on lport reset 2011-06-29 16:33:22 -05:00
fc_npiv.c [SCSI] fcoe, libfc: initialize EM anchors list and then update npiv EMs 2011-02-28 18:31:53 -06:00
fc_rport.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2011-07-23 11:13:11 -07:00
Makefile [SCSI] libfc: add some generic NPIV support routines to libfc 2009-12-04 12:00:56 -06:00