diff options
author | Hannes Reinecke <hare@suse.de> | 2011-08-24 12:51:17 +0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-08-30 23:31:24 +0400 |
commit | 6bc8d2a0c6bb3e52f0c66e6cde6799d1b90b42ba (patch) | |
tree | 4cbd2d0447b7136ef30bd3460423853e9a02871c /drivers/scsi/device_handler/scsi_dh.c | |
parent | 46ccf6b55bfa9fff7d0a9da761f186e98cf2f660 (diff) | |
download | linux-6bc8d2a0c6bb3e52f0c66e6cde6799d1b90b42ba.tar.xz |
[SCSI] scsi_dh: Check for sdev state in store_dh_state()
Avoid attaching a hardware handler to a device which is
already scheduled for deletion.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/device_handler/scsi_dh.c')
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/device_handler/scsi_dh.c b/drivers/scsi/device_handler/scsi_dh.c index 3ac71cf6b7f0..7c05fd9dccfd 100644 --- a/drivers/scsi/device_handler/scsi_dh.c +++ b/drivers/scsi/device_handler/scsi_dh.c @@ -190,6 +190,10 @@ store_dh_state(struct device *dev, struct device_attribute *attr, struct scsi_device_handler *scsi_dh; int err = -EINVAL; + if (sdev->sdev_state == SDEV_CANCEL || + sdev->sdev_state == SDEV_DEL) + return -ENODEV; + if (!sdev->scsi_dh_data) { /* * Attach to a device handler |