scsi: ufs: remove the duplicated checking for supporting clkscaling
[platform/kernel/linux-rpi.git] / block / genhd.c
index d9ccd42..3631cd4 100644 (file)
@@ -572,6 +572,20 @@ exit:
        disk_part_iter_exit(&piter);
 }
 
+void put_disk_devt(struct disk_devt *disk_devt)
+{
+       if (disk_devt && atomic_dec_and_test(&disk_devt->count))
+               disk_devt->release(disk_devt);
+}
+EXPORT_SYMBOL(put_disk_devt);
+
+void get_disk_devt(struct disk_devt *disk_devt)
+{
+       if (disk_devt)
+               atomic_inc(&disk_devt->count);
+}
+EXPORT_SYMBOL(get_disk_devt);
+
 /**
  * device_add_disk - add partitioning information to kernel list
  * @parent: parent device for the disk
@@ -612,6 +626,13 @@ void device_add_disk(struct device *parent, struct gendisk *disk)
 
        disk_alloc_events(disk);
 
+       /*
+        * Take a reference on the devt and assign it to queue since it
+        * must not be reallocated while the bdi is registered
+        */
+       disk->queue->disk_devt = disk->disk_devt;
+       get_disk_devt(disk->disk_devt);
+
        /* Register BDI before referencing it from bdev */
        bdi = disk->queue->backing_dev_info;
        bdi_register_owner(bdi, disk_to_dev(disk));