aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch')
-rw-r--r--target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch b/target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch
new file mode 100644
index 0000000..b2d53f9
--- /dev/null
+++ b/target/linux/generic/patches-3.18/040-mtd-bcm47xxpart-backports-from-3.19.patch
@@ -0,0 +1,50 @@
+--- 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;
+