Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux.git] / drivers / scsi / scsi_sysfs.c
index 1392474c349953b8a58e3faab4ec1473e23e62d1..074e8cc30955fe35d256a115bea2bb2549af721f 100644 (file)
@@ -647,23 +647,12 @@ store_rescan_field (struct device *dev, struct device_attribute *attr,
 }
 static DEVICE_ATTR(rescan, S_IWUSR, NULL, store_rescan_field);
 
-static void sdev_store_delete_callback(struct device *dev)
-{
-       scsi_remove_device(to_scsi_device(dev));
-}
-
 static ssize_t
 sdev_store_delete(struct device *dev, struct device_attribute *attr,
                  const char *buf, size_t count)
 {
-       int rc;
-
-       /* An attribute cannot be unregistered by one of its own methods,
-        * so we have to use this roundabout approach.
-        */
-       rc = device_schedule_callback(dev, sdev_store_delete_callback);
-       if (rc)
-               count = rc;
+       if (device_remove_file_self(dev, attr))
+               scsi_remove_device(to_scsi_device(dev));
        return count;
 };
 static DEVICE_ATTR(delete, S_IWUSR, NULL, sdev_store_delete);