]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - block/genhd.c
Merge remote-tracking branch 'block/for-next'
[karo-tx-linux.git] / block / genhd.c
index 6cace663a80e4a89492f8b656f580a944b134f9d..8f29a0b9032e37eb83d61cbd4f4c9585591ab2b6 100644 (file)
@@ -587,8 +587,6 @@ void add_disk(struct gendisk *disk)
        WARN_ON(disk->minors && !(disk->major || disk->first_minor));
        WARN_ON(!disk->minors && !(disk->flags & GENHD_FL_EXT_DEVT));
 
-       disk->flags |= GENHD_FL_UP;
-
        retval = blk_alloc_devt(&disk->part0, &devt);
        if (retval) {
                WARN_ON(1);
@@ -596,6 +594,8 @@ void add_disk(struct gendisk *disk)
        }
        disk_to_dev(disk)->devt = devt;
 
+       disk->flags |= GENHD_FL_UP;
+
        /* ->major and ->first_minor aren't supposed to be
         * dereferenced from here on, but set them just in case.
         */
@@ -1105,7 +1105,7 @@ static void disk_release(struct device *dev)
        disk_replace_part_tbl(disk, NULL);
        free_part_stats(&disk->part0);
        free_part_info(&disk->part0);
-       if (disk->queue)
+       if (disk->queue && disk->flags & GENHD_FL_UP)
                blk_put_queue(disk->queue);
        kfree(disk);
 }