diff options
author | Jan Kara <jack@suse.cz> | 2017-03-08 11:48:34 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-03-08 12:55:17 -0500 |
commit | c01228db4ba965986511a5b28c478bddd7e2726e (patch) | |
tree | 41fe10418d432b17e93898ed9f84b8aebc78c7ad /block/genhd.c | |
parent | 90f16fddcc2802726142b8386c65ccb89f044613 (diff) |
Revert "scsi, block: fix duplicate bdi name registration crashes"
This reverts commit 0dba1314d4f81115dce711292ec7981d17231064. It causes
leaking of device numbers for SCSI when SCSI registers multiple gendisks
for one request_queue in succession. It can be easily reproduced using
Omar's script [1] on kernel with CONFIG_DEBUG_TEST_DRIVER_REMOVE.
Furthermore the protection provided by this commit is not needed anymore
as the problem it was fixing got also fixed by commit 165a5e22fafb
"block: Move bdi_unregister() to del_gendisk()".
[1]: http://marc.info/?l=linux-block&m=148554717109098&w=2
Signed-off-by: Jan Kara <jack@suse.cz>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/genhd.c')
-rw-r--r-- | block/genhd.c | 21 |
1 files changed, 0 insertions, 21 deletions
diff --git a/block/genhd.c b/block/genhd.c index 94f323842b52..a9c516a8b37d 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -572,20 +572,6 @@ exit: | |||
572 | disk_part_iter_exit(&piter); | 572 | disk_part_iter_exit(&piter); |
573 | } | 573 | } |
574 | 574 | ||
575 | void put_disk_devt(struct disk_devt *disk_devt) | ||
576 | { | ||
577 | if (disk_devt && atomic_dec_and_test(&disk_devt->count)) | ||
578 | disk_devt->release(disk_devt); | ||
579 | } | ||
580 | EXPORT_SYMBOL(put_disk_devt); | ||
581 | |||
582 | void get_disk_devt(struct disk_devt *disk_devt) | ||
583 | { | ||
584 | if (disk_devt) | ||
585 | atomic_inc(&disk_devt->count); | ||
586 | } | ||
587 | EXPORT_SYMBOL(get_disk_devt); | ||
588 | |||
589 | /** | 575 | /** |
590 | * device_add_disk - add partitioning information to kernel list | 576 | * device_add_disk - add partitioning information to kernel list |
591 | * @parent: parent device for the disk | 577 | * @parent: parent device for the disk |
@@ -626,13 +612,6 @@ void device_add_disk(struct device *parent, struct gendisk *disk) | |||
626 | 612 | ||
627 | disk_alloc_events(disk); | 613 | disk_alloc_events(disk); |
628 | 614 | ||
629 | /* | ||
630 | * Take a reference on the devt and assign it to queue since it | ||
631 | * must not be reallocated while the bdi is registered | ||
632 | */ | ||
633 | disk->queue->disk_devt = disk->disk_devt; | ||
634 | get_disk_devt(disk->disk_devt); | ||
635 | |||
636 | /* Register BDI before referencing it from bdev */ | 615 | /* Register BDI before referencing it from bdev */ |
637 | bdi = disk->queue->backing_dev_info; | 616 | bdi = disk->queue->backing_dev_info; |
638 | bdi_register_owner(bdi, disk_to_dev(disk)); | 617 | bdi_register_owner(bdi, disk_to_dev(disk)); |