Merge tag 'dt-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[cascardo/linux.git] / drivers / s390 / block / dcssblk.c
index ebf41e2..ee0e85a 100644 (file)
@@ -304,12 +304,6 @@ dcssblk_load_segment(char *name, struct segment_info **seg_info)
        return rc;
 }
 
-static void dcssblk_unregister_callback(struct device *dev)
-{
-       device_unregister(dev);
-       put_device(dev);
-}
-
 /*
  * device attribute for switching shared/nonshared (exclusive)
  * operation (show + store)
@@ -397,7 +391,13 @@ removeseg:
        blk_cleanup_queue(dev_info->dcssblk_queue);
        dev_info->gd->queue = NULL;
        put_disk(dev_info->gd);
-       rc = device_schedule_callback(dev, dcssblk_unregister_callback);
+       up_write(&dcssblk_devices_sem);
+
+       if (device_remove_file_self(dev, attr)) {
+               device_unregister(dev);
+               put_device(dev);
+       }
+       return rc;
 out:
        up_write(&dcssblk_devices_sem);
        return rc;