diff options
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/brd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index e9a19d99f928..b1efa8f9ff42 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
@@ -548,7 +548,7 @@ static struct kobject *brd_probe(dev_t dev, int *part, void *data) | |||
548 | struct kobject *kobj; | 548 | struct kobject *kobj; |
549 | 549 | ||
550 | mutex_lock(&brd_devices_mutex); | 550 | mutex_lock(&brd_devices_mutex); |
551 | brd = brd_init_one(dev & MINORMASK); | 551 | brd = brd_init_one(MINOR(dev) >> part_shift); |
552 | kobj = brd ? get_disk(brd->brd_disk) : ERR_PTR(-ENOMEM); | 552 | kobj = brd ? get_disk(brd->brd_disk) : ERR_PTR(-ENOMEM); |
553 | mutex_unlock(&brd_devices_mutex); | 553 | mutex_unlock(&brd_devices_mutex); |
554 | 554 | ||
@@ -589,10 +589,10 @@ static int __init brd_init(void) | |||
589 | 589 | ||
590 | if (rd_nr) { | 590 | if (rd_nr) { |
591 | nr = rd_nr; | 591 | nr = rd_nr; |
592 | range = rd_nr; | 592 | range = rd_nr << part_shift; |
593 | } else { | 593 | } else { |
594 | nr = CONFIG_BLK_DEV_RAM_COUNT; | 594 | nr = CONFIG_BLK_DEV_RAM_COUNT; |
595 | range = 1UL << (MINORBITS - part_shift); | 595 | range = 1UL << MINORBITS; |
596 | } | 596 | } |
597 | 597 | ||
598 | if (register_blkdev(RAMDISK_MAJOR, "ramdisk")) | 598 | if (register_blkdev(RAMDISK_MAJOR, "ramdisk")) |
@@ -631,7 +631,7 @@ static void __exit brd_exit(void) | |||
631 | unsigned long range; | 631 | unsigned long range; |
632 | struct brd_device *brd, *next; | 632 | struct brd_device *brd, *next; |
633 | 633 | ||
634 | range = rd_nr ? rd_nr : 1UL << (MINORBITS - part_shift); | 634 | range = rd_nr ? rd_nr << part_shift : 1UL << MINORBITS; |
635 | 635 | ||
636 | list_for_each_entry_safe(brd, next, &brd_devices, brd_list) | 636 | list_for_each_entry_safe(brd, next, &brd_devices, brd_list) |
637 | brd_del_one(brd); | 637 | brd_del_one(brd); |