aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2020-02-23 13:20:11 +0100
committerKoen Vandeputte <koen.vandeputte@ncentric.com>2020-02-28 17:50:45 +0100
commitc16517d26de30c90dabce1e456615fd7fbdce07c (patch)
treee7371ee12a3c413a064885b634ee4c975ad7f96a /target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch
parent955634b473284847e3c8281a6ac85655329d8b06 (diff)
downloadupstream-c16517d26de30c90dabce1e456615fd7fbdce07c.tar.gz
upstream-c16517d26de30c90dabce1e456615fd7fbdce07c.tar.bz2
upstream-c16517d26de30c90dabce1e456615fd7fbdce07c.zip
kernel: copy kernel 4.19 code to 5.4
No changes were done to the patches while coping them. Currently they do not apply on top of kernel 5.4. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch')
-rw-r--r--target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch b/target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch
new file mode 100644
index 0000000000..d587c9ec07
--- /dev/null
+++ b/target/linux/generic/backport-5.4/047-v4.21-mtd-keep-original-flags-for-every-struct-mtd_info.patch
@@ -0,0 +1,58 @@
+From 1186af457cc186c5ed01708da71b1ffbdf0a2638 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Tue, 20 Nov 2018 09:55:45 +0100
+Subject: [PATCH] mtd: keep original flags for every struct mtd_info
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When allocating a new partition mtd subsystem runs internal tests in the
+allocate_partition(). They may result in modifying specified flags (e.g.
+dropping some /features/ like write access).
+
+Those constraints don't have to be necessary true for subpartitions. It
+may happen parent partition isn't block aligned (effectively disabling
+write access) while subpartition may fit blocks nicely. In such case all
+checks should be run again (starting with original flags value).
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
+---
+ drivers/mtd/mtdcore.c | 2 ++
+ drivers/mtd/mtdpart.c | 3 ++-
+ include/linux/mtd/mtd.h | 1 +
+ 3 files changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/mtd/mtdcore.c
++++ b/drivers/mtd/mtdcore.c
+@@ -665,6 +665,8 @@ static void mtd_set_dev_defaults(struct
+ } else {
+ pr_debug("mtd device won't show a device symlink in sysfs\n");
+ }
++
++ mtd->orig_flags = mtd->flags;
+ }
+
+ /**
+--- a/drivers/mtd/mtdpart.c
++++ b/drivers/mtd/mtdpart.c
+@@ -346,7 +346,8 @@ static struct mtd_part *allocate_partiti
+
+ /* set up the MTD object for this partition */
+ slave->mtd.type = parent->type;
+- slave->mtd.flags = parent->flags & ~part->mask_flags;
++ slave->mtd.flags = parent->orig_flags & ~part->mask_flags;
++ slave->mtd.orig_flags = slave->mtd.flags;
+ slave->mtd.size = part->size;
+ slave->mtd.writesize = parent->writesize;
+ slave->mtd.writebufsize = parent->writebufsize;
+--- a/include/linux/mtd/mtd.h
++++ b/include/linux/mtd/mtd.h
+@@ -207,6 +207,7 @@ struct mtd_debug_info {
+ struct mtd_info {
+ u_char type;
+ uint32_t flags;
++ uint32_t orig_flags; /* Flags as before running mtd checks */
+ uint64_t size; // Total size of the MTD
+
+ /* "Major" erase size for the device. Naïve users may take this