| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> |
| Date: Tue, 13 Apr 2021 18:25:20 +0200 |
| Subject: [PATCH] mtd: parsers: trx: parse "firmware" MTD partitions only |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Parsing every partition with "compatible" set to "brcm,trx" results in |
| parsing both: firmware partition and failsafe partition on devices that |
| implement failsafe booting. This affects e.g. Linksys EA9500 which has: |
| |
| partition@200000 { |
| reg = <0x0200000 0x01d00000>; |
| compatible = "linksys,ns-firmware", "brcm,trx"; |
| }; |
| |
| partition@1f00000 { |
| reg = <0x01f00000 0x01d00000>; |
| compatible = "linksys,ns-firmware", "brcm,trx"; |
| }; |
| |
| Check for MTD partition name "firmware" before parsing. Recently added |
| ofpart_linksys_ns.c creates "firmware" and "failsafe" depending on |
| bootloader setup. |
| |
| Signed-off-by: Rafał Miłecki <rafal@milecki.pl> |
| --- |
| drivers/mtd/parsers/parser_trx.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/mtd/parsers/parser_trx.c |
| +++ b/drivers/mtd/parsers/parser_trx.c |
| @@ -85,6 +85,10 @@ static int parser_trx_parse(struct mtd_i |
| uint8_t curr_part = 0, i = 0; |
| int err; |
| |
| + /* Don't parse any failsafe / backup partitions */ |
| + if (strcmp(mtd->name, "firmware")) |
| + return -EINVAL; |
| + |
| parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition), |
| GFP_KERNEL); |
| if (!parts) |