diff --git a/drivers/block/loop.c b/drivers/block/loop.c index a076a14ca72d..cbf7052d1dd5 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -1691,6 +1691,9 @@ static int __init loop_init(void) if (max_part > 0) part_shift = fls(max_part); + if ((1UL << part_shift) > DISK_MAX_PARTS) + return -EINVAL; + if (max_loop > 1UL << (MINORBITS - part_shift)) return -EINVAL;