From: Rafał Miłecki Date: Sun, 20 Nov 2016 15:41:29 +0000 (+0100) Subject: kernel: add bcm47xxpart patch fixing parsing with some TRX formats X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=746e63201bef8fcbe8a333a8834976b2d7f3d82d;p=openwrt%2Fstaging%2Frobimarko.git kernel: add bcm47xxpart patch fixing parsing with some TRX formats This fixes parsing partition placed after TRX with block-aligned length. It's important e.g. for Archer C9 which has TRX with kernel only and rootfs as separated partition. Signed-off-by: Rafał Miłecki --- diff --git a/target/linux/generic/patches-4.4/143-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch b/target/linux/generic/patches-4.4/143-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch new file mode 100644 index 0000000000..889550fd7d --- /dev/null +++ b/target/linux/generic/patches-4.4/143-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch @@ -0,0 +1,37 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Subject: [PATCH] mtd: bcm47xxpart: fix parsing first block after aligned TRX +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +After parsing TRX we should skip to the first block placed behind it. +Our code was working only with TRX with length not aligned to the +blocksize. In other cases (length aligned) it was missing the block +places right after TRX. + +This fixes calculation and simplifies the comment. + +Signed-off-by: Rafał Miłecki +--- + drivers/mtd/bcm47xxpart.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/drivers/mtd/bcm47xxpart.c ++++ b/drivers/mtd/bcm47xxpart.c +@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_ + + last_trx_part = curr_part - 1; + +- /* +- * We have whole TRX scanned, skip to the next part. Use +- * roundown (not roundup), as the loop will increase +- * offset in next step. +- */ +- offset = rounddown(offset + trx->length, blocksize); ++ /* Jump to the end of TRX */ ++ offset = roundup(offset + trx->length, blocksize); ++ /* Next loop iteration will increase the offset */ ++ offset -= blocksize; + continue; + } +