[PATCH for-2.6.39] [SCSI] scsi_dh_emc: fix panic when handling multiple path failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Eddie Williams <eddie.williams@xxxxxxxxxxxx>

Do not sdev_printk() a scsi_device that was, or is being, deleted.

If multiple failures occur (e.g. FC switch with multiple paths fails),
and both the active path and next path is failed in the process, the
scsi_device associated with the next path can be accessed after it was
deleted.

Signed-off-by: Eddie Williams <eddie.williams@xxxxxxxxxxxx>
Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx>
---
 drivers/scsi/device_handler/scsi_dh_emc.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c
index 48441f6..670f059 100644
--- a/drivers/scsi/device_handler/scsi_dh_emc.c
+++ b/drivers/scsi/device_handler/scsi_dh_emc.c
@@ -537,14 +537,14 @@ static int clariion_activate(struct scsi_device *sdev,
 
 	result = clariion_send_inquiry(sdev, csdev);
 	if (result != SCSI_DH_OK)
-		goto done;
+		goto out;
 
 	if (csdev->lun_state == CLARIION_LUN_OWNED)
 		goto done;
 
 	result = send_trespass_cmd(sdev, csdev);
 	if (result != SCSI_DH_OK)
-		goto done;
+		goto out;
 	sdev_printk(KERN_INFO, sdev,"%s: %s trespass command sent\n",
 		    CLARIION_NAME,
 		    csdev->flags&CLARIION_SHORT_TRESPASS?"short":"long" );
@@ -552,7 +552,7 @@ static int clariion_activate(struct scsi_device *sdev,
 	/* Update status */
 	result = clariion_send_inquiry(sdev, csdev);
 	if (result != SCSI_DH_OK)
-		goto done;
+		goto out;
 
 done:
 	sdev_printk(KERN_INFO, sdev,
@@ -561,10 +561,12 @@ done:
 		    csdev->port, lun_state[csdev->lun_state],
 		    csdev->default_sp + 'A');
 
+out:
 	if (fn)
 		fn(data, result);
 	return 0;
 }
+
 /*
  * params - parameters in the following format
  *      "no_of_params\0param1\0param2\0param3\0...\0"
-- 
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux