scsi_dh: don't allow to detach device handlers at runtime

The I/O submission and completion paths call into the device handler
without any synchronization agains detachment.  So disallow detaching
device handlers at runtime.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
This commit is contained in:
Christoph Hellwig 2015-08-27 14:17:01 +02:00 committed by James Bottomley
parent e959ed9a44
commit d442277495

View file

@ -181,8 +181,10 @@ store_dh_state(struct device *dev, struct device_attribute *attr,
/* /*
* Detach from a device handler * Detach from a device handler
*/ */
scsi_dh_handler_detach(sdev); sdev_printk(KERN_WARNING, sdev,
err = 0; "can't detach handler %s.\n",
sdev->handler->name);
err = -EINVAL;
} else if (!strncmp(buf, "activate", 8)) { } else if (!strncmp(buf, "activate", 8)) {
/* /*
* Activate a device handler * Activate a device handler