layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 303-core-0008-ENGR00279980-ubi-attach-do-not-return-EINVAL-if-the-.patch
diff --git a/target/linux/layerscape/patches-5.4/303-core-0008-ENGR00279980-ubi-attach-do-not-return-EINVAL-if-the-.patch b/target/linux/layerscape/patches-5.4/303-core-0008-ENGR00279980-ubi-attach-do-not-return-EINVAL-if-the-.patch
new file mode 100644 (file)
index 0000000..c67cdb0
--- /dev/null
@@ -0,0 +1,46 @@
+From 17e6b7bb84649ffcbec11b3e3e933294d8856462 Mon Sep 17 00:00:00 2001
+From: Huang Shijie <b32955@freescale.com>
+Date: Wed, 18 Sep 2013 10:17:39 +0800
+Subject: [PATCH] ENGR00279980 ubi: attach: do not return -EINVAL if the
+ mtd->numeraseregions is 1
+
+If the master mtd does not have any slave mtd partitions,
+and its numeraseregions is one(only has one erease block), and
+we attach the master mtd with : ubiattach -m 0 -d 0
+
+We will meet the error:
+-------------------------------------------------------
+root@freescale ~$ ubiattach /dev/ubi_ctrl -m 0 -d 0
+UBI: attaching mtd0 to ubi0
+UBI error: io_init: multiple regions, not implemented
+ubiattach: error!: cannot attach mtd0
+           error 22 (Invalid argument)
+-------------------------------------------------------
+
+In fact, if there is only one "erase block", we should not
+prevent the attach.
+
+This patch fixes it.
+
+Signed-off-by: Huang Shijie <b32955@freescale.com>
+(cherry picked from commit 361cdc47fc4c4db31c5485560cdabd94f409bd81)
+(cherry picked from commit ebee7d74914fad3cf7223af84496811c9d2488a1)
+
+Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
+
+Signed-off-by: Han Xu <han.xu@nxp.com>
+---
+ drivers/mtd/ubi/build.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/mtd/ubi/build.c
++++ b/drivers/mtd/ubi/build.c
+@@ -576,7 +576,7 @@ static int io_init(struct ubi_device *ub
+       dbg_gen("sizeof(struct ubi_ainf_peb) %zu", sizeof(struct ubi_ainf_peb));
+       dbg_gen("sizeof(struct ubi_wl_entry) %zu", sizeof(struct ubi_wl_entry));
+-      if (ubi->mtd->numeraseregions != 0) {
++      if (ubi->mtd->numeraseregions > 1) {
+               /*
+                * Some flashes have several erase regions. Different regions
+                * may have different eraseblock size and other