diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2016-11-20 16:41:29 +0100 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2016-11-20 16:43:58 +0100 |
commit | 746e63201bef8fcbe8a333a8834976b2d7f3d82d (patch) | |
tree | c1beee12f2a738af74a7dce4359e01446778c2c5 | |
parent | 27c355f8a4faf13f438855259afbfd230f9e3a2b (diff) | |
download | upstream-746e63201bef8fcbe8a333a8834976b2d7f3d82d.tar.gz upstream-746e63201bef8fcbe8a333a8834976b2d7f3d82d.tar.bz2 upstream-746e63201bef8fcbe8a333a8834976b2d7f3d82d.zip |
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 <rafal@milecki.pl>
-rw-r--r-- | target/linux/generic/patches-4.4/143-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch | 37 |
1 files changed, 37 insertions, 0 deletions
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?= <rafal@milecki.pl> +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 <rafal@milecki.pl> +--- + 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; + } + |