From: Ben Hutchings Date: Fri, 29 Jan 2010 20:59:53 +0000 (+0000) Subject: mtd: Raise limit on block device minor numbers X-Git-Tag: v2.6.35-rc1~465^2~119 X-Git-Url: https://bbs.cooldavid.org/git/?a=commitdiff_plain;h=4d3a8534bdbcf4843fc8ad05c9a81a964fc65237;p=net-next-2.6.git mtd: Raise limit on block device minor numbers add_mtd_blktrans_dev() imposes a maximum of 257 devices per block translator. This was presumably meant to prevent overflow back in the days of 8-bit minor numbers. Instead, check against MINORMASK and the limits of the partition naming scheme. Signed-off-by: Ben Hutchings Signed-off-by: Artem Bityutskiy Signed-off-by: David Woodhouse --- diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index 85a52b3c769..2f8c202dbd8 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c @@ -242,9 +242,12 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) if (new->devnum == -1) new->devnum = last_devnum+1; - if ((new->devnum << tr->part_bits) > 256) { + /* Check that the device and any partitions will get valid + * minor numbers and that the disk naming code below can cope + * with this number. */ + if (new->devnum > (MINORMASK >> tr->part_bits) || + (tr->part_bits && new->devnum >= 27 * 26)) return -EBUSY; - } list_add_tail(&new->list, &tr->devs); added: