kernel: mtd: ubi: avoid attaching "linux,ubi" mtd again
authorShiji Yang <yangshiji66@qq.com>
Fri, 21 Jun 2024 13:56:23 +0000 (13:56 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 28 Jun 2024 19:55:11 +0000 (20:55 +0100)
"linux,ubi" compatible MTD device can be automatically attached early
since commit fc153aa8d94f. Therefore, there is no need to attach MTD
devices named "ubi" or "data" again.

Signed-off-by: Shiji Yang <yangshiji66@qq.com>
target/linux/generic/pending-6.6/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch

index 6405865c459e7ec51a36788df11615dfc611db53..defde3f4269c210693f48b8fa85a1f4aa7f6ff0f 100644 (file)
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1258,6 +1258,74 @@ static struct mtd_notifier ubi_mtd_notif
+@@ -1258,6 +1258,80 @@ static struct mtd_notifier ubi_mtd_notif
        .remove = ubi_notify_remove,
  };
  
@@ -21,6 +21,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +{
 +      int err;
 +      struct mtd_info *mtd;
++      struct device_node *np;
 +      loff_t offset = 0;
 +      size_t len;
 +      char magic[4];
@@ -33,6 +34,11 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +      if (IS_ERR(mtd))
 +              return;
 +
++      /* skip "linux,ubi" mtd as it has already been attached */
++      np = mtd_get_of_node(mtd);
++      if (of_device_is_compatible(np, "linux,ubi"))
++              goto cleanup;
++
 +      /* get the first not bad block */
 +      if (mtd_can_have_bb(mtd))
 +              while (mtd_block_isbad(mtd, offset)) {
@@ -83,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static int __init ubi_init_attach(void)
  {
        int err, i, k;
-@@ -1308,6 +1376,12 @@ static int __init ubi_init_attach(void)
+@@ -1308,6 +1382,12 @@ static int __init ubi_init_attach(void)
                }
        }