From: Rafał Miłecki Date: Mon, 9 Mar 2020 10:46:20 +0000 (+0100) Subject: kernel: backport mtd partition address fix sent upstream X-Git-Tag: v21.02.0-rc1~3555 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5cc0493c2bac3089de3bfb52256748c6a9249254;p=thirdparty%2Fopenwrt.git kernel: backport mtd partition address fix sent upstream Signed-off-by: Rafał Miłecki --- diff --git a/target/linux/generic/backport-4.14/410-mtd-fix-calculating-partition-end-address.patch b/target/linux/generic/backport-4.14/410-mtd-fix-calculating-partition-end-address.patch new file mode 100644 index 00000000000..ec25eef7a90 --- /dev/null +++ b/target/linux/generic/backport-4.14/410-mtd-fix-calculating-partition-end-address.patch @@ -0,0 +1,28 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 9 Mar 2020 08:30:19 +0100 +Subject: [PATCH] mtd: fix calculating partition end address +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes check for partitions that don't start at beginning of their +parents. Missing partition's offset in formula could result in forcing +read-only incorrectly. + +Fixes: 6750f61a13a0 ("mtd: improve calculating partition boundaries when checking for alignment") +Signed-off-by: Rafał Miłecki +--- + drivers/mtd/mtdpart.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/mtdpart.c ++++ b/drivers/mtd/mtdpart.c +@@ -582,7 +582,7 @@ static struct mtd_part *allocate_partiti + part->name); + } + +- tmp = part_absolute_offset(parent) + slave->mtd.size; ++ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + remainder = do_div(tmp, wr_alignment); + if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { + slave->mtd.flags &= ~MTD_WRITEABLE; diff --git a/target/linux/generic/backport-4.19/410-mtd-fix-calculating-partition-end-address.patch b/target/linux/generic/backport-4.19/410-mtd-fix-calculating-partition-end-address.patch new file mode 100644 index 00000000000..4027bfd7149 --- /dev/null +++ b/target/linux/generic/backport-4.19/410-mtd-fix-calculating-partition-end-address.patch @@ -0,0 +1,28 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 9 Mar 2020 08:30:19 +0100 +Subject: [PATCH] mtd: fix calculating partition end address +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes check for partitions that don't start at beginning of their +parents. Missing partition's offset in formula could result in forcing +read-only incorrectly. + +Fixes: 6750f61a13a0 ("mtd: improve calculating partition boundaries when checking for alignment") +Signed-off-by: Rafał Miłecki +--- + drivers/mtd/mtdpart.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/mtdpart.c ++++ b/drivers/mtd/mtdpart.c +@@ -538,7 +538,7 @@ static struct mtd_part *allocate_partiti + part->name); + } + +- tmp = part_absolute_offset(parent) + slave->mtd.size; ++ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + remainder = do_div(tmp, wr_alignment); + if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { + slave->mtd.flags &= ~MTD_WRITEABLE; diff --git a/target/linux/generic/backport-5.4/410-mtd-fix-calculating-partition-end-address.patch b/target/linux/generic/backport-5.4/410-mtd-fix-calculating-partition-end-address.patch new file mode 100644 index 00000000000..1eae015b286 --- /dev/null +++ b/target/linux/generic/backport-5.4/410-mtd-fix-calculating-partition-end-address.patch @@ -0,0 +1,28 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 9 Mar 2020 08:30:19 +0100 +Subject: [PATCH] mtd: fix calculating partition end address +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes check for partitions that don't start at beginning of their +parents. Missing partition's offset in formula could result in forcing +read-only incorrectly. + +Fixes: 6750f61a13a0 ("mtd: improve calculating partition boundaries when checking for alignment") +Signed-off-by: Rafał Miłecki +--- + drivers/mtd/mtdpart.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/mtdpart.c ++++ b/drivers/mtd/mtdpart.c +@@ -524,7 +524,7 @@ static struct mtd_part *allocate_partiti + part->name); + } + +- tmp = part_absolute_offset(parent) + slave->mtd.size; ++ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + remainder = do_div(tmp, wr_alignment); + if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { + slave->mtd.flags &= ~MTD_WRITEABLE; diff --git a/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch index 3b862dae61d..52f1cb5abff 100644 --- a/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch +++ b/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch @@ -123,8 +123,7 @@ Signed-off-by: Felix Fietkau + slave->mtd.erasesize = slave->mtd.size; } -- tmp = part_absolute_offset(parent) + slave->mtd.size; -+ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { - slave->mtd.flags &= ~MTD_WRITEABLE; diff --git a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch index bf9822fda83..f3a314ae02e 100644 --- a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch +++ b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch @@ -114,8 +114,7 @@ Signed-off-by: Felix Fietkau + slave->mtd.erasesize = slave->mtd.size; } -- tmp = part_absolute_offset(parent) + slave->mtd.size; -+ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { - slave->mtd.flags &= ~MTD_WRITEABLE; diff --git a/target/linux/generic/pending-5.4/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-5.4/411-mtd-partial_eraseblock_write.patch index f2a187df30f..b46c3f5ed42 100644 --- a/target/linux/generic/pending-5.4/411-mtd-partial_eraseblock_write.patch +++ b/target/linux/generic/pending-5.4/411-mtd-partial_eraseblock_write.patch @@ -114,8 +114,7 @@ Signed-off-by: Felix Fietkau + slave->mtd.erasesize = slave->mtd.size; } -- tmp = part_absolute_offset(parent) + slave->mtd.size; -+ tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; + tmp = part_absolute_offset(parent) + slave->offset + slave->mtd.size; remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { - slave->mtd.flags &= ~MTD_WRITEABLE;