diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 7ce092ab0f057d6aff3aa1b2a73818d594df32ce..50b61a92b08dd6a2e1548a7fd70d6a189d135797 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -938,6 +938,12 @@ int blk_register_queue(struct gendisk *disk) return ret; } } + + /* + * Set the flag at last, so that block devcie can't be opened + * before it's registration is done. + */ + disk->flags |= GENHD_FL_UP; ret = 0; unlock: mutex_unlock(&q->sysfs_lock); diff --git a/block/genhd.c b/block/genhd.c index 82c5b6e0afdbfa452b24bdaf72d421d44c18a028..94b0fe34a755f77016fd7eb34a876e45bffb3294 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -696,8 +696,6 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk, WARN_ON(!disk->minors && !(disk->flags & (GENHD_FL_EXT_DEVT | GENHD_FL_HIDDEN))); - disk->flags |= GENHD_FL_UP; - retval = blk_alloc_devt(&disk->part0, &devt); if (retval) { WARN_ON(1);