@@ -614,7 +614,15 @@ void device_add_disk(struct device *parent, struct gendisk *disk)
/* Register BDI before referencing it from bdev */
bdi = &disk->queue->backing_dev_info;
- bdi_register_owner(bdi, disk_to_dev(disk));
+ if (bdi_register_owner(bdi, disk_to_dev(disk))) {
+ disk_release_events(disk);
+ blk_free_devt(devt);
+ disk->ev = NULL;
+ disk->first_minor = 0;
+ disk->major = 0;
+ WARN_ON(1);
+ return;
+ }
blk_register_region(disk_devt(disk), disk->minors, NULL,
exact_match, exact_lock, disk);