|
@@ -1658,7 +1658,7 @@ static struct kobject *loop_probe(dev_t dev, int *part, void *data)
|
|
|
struct kobject *kobj;
|
|
struct kobject *kobj;
|
|
|
|
|
|
|
|
mutex_lock(&loop_devices_mutex);
|
|
mutex_lock(&loop_devices_mutex);
|
|
|
- lo = loop_init_one(dev & MINORMASK);
|
|
|
|
|
|
|
+ lo = loop_init_one(MINOR(dev) >> part_shift);
|
|
|
kobj = lo ? get_disk(lo->lo_disk) : ERR_PTR(-ENOMEM);
|
|
kobj = lo ? get_disk(lo->lo_disk) : ERR_PTR(-ENOMEM);
|
|
|
mutex_unlock(&loop_devices_mutex);
|
|
mutex_unlock(&loop_devices_mutex);
|
|
|
|
|
|
|
@@ -1699,10 +1699,10 @@ static int __init loop_init(void)
|
|
|
|
|
|
|
|
if (max_loop) {
|
|
if (max_loop) {
|
|
|
nr = max_loop;
|
|
nr = max_loop;
|
|
|
- range = max_loop;
|
|
|
|
|
|
|
+ range = max_loop << part_shift;
|
|
|
} else {
|
|
} else {
|
|
|
nr = 8;
|
|
nr = 8;
|
|
|
- range = 1UL << (MINORBITS - part_shift);
|
|
|
|
|
|
|
+ range = 1UL << MINORBITS;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (register_blkdev(LOOP_MAJOR, "loop"))
|
|
if (register_blkdev(LOOP_MAJOR, "loop"))
|
|
@@ -1741,7 +1741,7 @@ static void __exit loop_exit(void)
|
|
|
unsigned long range;
|
|
unsigned long range;
|
|
|
struct loop_device *lo, *next;
|
|
struct loop_device *lo, *next;
|
|
|
|
|
|
|
|
- range = max_loop ? max_loop : 1UL << (MINORBITS - part_shift);
|
|
|
|
|
|
|
+ range = max_loop ? max_loop << part_shift : 1UL << MINORBITS;
|
|
|
|
|
|
|
|
list_for_each_entry_safe(lo, next, &loop_devices, lo_list)
|
|
list_for_each_entry_safe(lo, next, &loop_devices, lo_list)
|
|
|
loop_del_one(lo);
|
|
loop_del_one(lo);
|