1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- --- a/drivers/mtd/bcm47xxpart.c
- +++ b/drivers/mtd/bcm47xxpart.c
- @@ -15,8 +15,12 @@
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/partitions.h>
-
- -/* 10 parts were found on sflash on Netgear WNDR4500 */
- -#define BCM47XXPART_MAX_PARTS 12
- +/*
- + * NAND flash on Netgear R6250 was verified to contain 15 partitions.
- + * This will result in allocating too big array for some old devices, but the
- + * memory will be freed soon anyway (see mtd_device_parse_register).
- + */
- +#define BCM47XXPART_MAX_PARTS 20
-
- /*
- * Amount of bytes we read when analyzing each block of flash memory.
- @@ -168,18 +172,26 @@ static int bcm47xxpart_parse(struct mtd_
- i++;
- }
-
- - bcm47xxpart_add_part(&parts[curr_part++], "linux",
- - offset + trx->offset[i], 0);
- - i++;
- + if (trx->offset[i]) {
- + bcm47xxpart_add_part(&parts[curr_part++],
- + "linux",
- + offset + trx->offset[i],
- + 0);
- + i++;
- + }
-
- /*
- * Pure rootfs size is known and can be calculated as:
- * trx->length - trx->offset[i]. We don't fill it as
- * we want to have jffs2 (overlay) in the same mtd.
- */
- - bcm47xxpart_add_part(&parts[curr_part++], "rootfs",
- - offset + trx->offset[i], 0);
- - i++;
- + if (trx->offset[i]) {
- + bcm47xxpart_add_part(&parts[curr_part++],
- + "rootfs",
- + offset + trx->offset[i],
- + 0);
- + i++;
- + }
-
- last_trx_part = curr_part - 1;
-
|