Skip to contentSkip to conversation

mtd: Use get_mtdids() instead of env_get("mtdids") in mtd_search_alternate_name()

PATCH New Boris Brezillon 2 participants 3 messages Nov 16, 2018 – Nov 18, 2018 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtd: Use get_mtdids() instead of env_get("mtdids") in mtd_search_alternate_name()

The environment is not guaranteed to contain a valid mtdids variable when called from mtd_search_alternate_name(). Call get_mtdids() instead of env_get("mtdids").

Fixes ff4afa8a981e ("mtd: uboot: search for an equivalent MTD name with the mtdids")
---
 drivers/mtd/mtd_uboot.c | 45 ++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 23 deletions(-)
drivers/mtd/mtd_uboot.c +22 -23
index 6a3e64395de2..b38771d0497f 100644
@@ -13,6 +13,27 @@
 
 #define MTD_NAME_MAX_LEN 20
 
+static const char *get_mtdids(void)
+{
+	__maybe_unused const char *mtdparts = NULL;
+	const char *mtdids = env_get("mtdids");
+
+	if (mtdids)
+		return mtdids;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+	board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDIDS_DEFAULT)
+	mtdids = MTDIDS_DEFAULT;
+#elif defined(CONFIG_MTDIDS_DEFAULT)
+	mtdids = CONFIG_MTDIDS_DEFAULT;
+#endif
+
+	if (mtdids)
+		env_set("mtdids", mtdids);
+
+	return mtdids;
+}
 
 /**
  * mtd_search_alternate_name - Search an alternate name for @mtdname thanks to
@@ -34,7 +55,7 @@ int mtd_search_alternate_name(const char *mtdname, char *altname,
 	const char *mtdids, *equal, *comma, *dev_id, *mtd_id;
 	int dev_id_len, mtd_id_len;
 
-	mtdids = env_get("mtdids");
+	mtdids = get_mtdids();
 	if (!mtdids)
 		return -EINVAL;
 
@@ -95,28 +116,6 @@ static void mtd_probe_uclass_mtd_devs(void) { }
 extern void board_mtdparts_default(const char **mtdids,
 				   const char **mtdparts);
 
-static const char *get_mtdids(void)
-{
-	__maybe_unused const char *mtdparts = NULL;
-	const char *mtdids = env_get("mtdids");
-
-	if (mtdids)
-		return mtdids;
-
-#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
-	board_mtdparts_default(&mtdids, &mtdparts);
-#elif defined(MTDIDS_DEFAULT)
-	mtdids = MTDIDS_DEFAULT;
-#elif defined(CONFIG_MTDIDS_DEFAULT)
-	mtdids = CONFIG_MTDIDS_DEFAULT;
-#endif
-
-	if (mtdids)
-		env_set("mtdids", mtdids);
-
-	return mtdids;
-}
-
 #define MTDPARTS_MAXLEN         512
 
 static const char *get_mtdparts(void)
Signature · 1 line
2.17.1
maintainer
#1 lore raw

PATCH 1/1 mtd: Use get_mtdids() instead of env_get("mtdids") in mtd_search_alternate_name()

Hi Boris,

Boris Brezillon <[email protected]> wrote on Fri, 16 Nov 2018 23:15:42 +0100:

Quoted 7 lines

The environment is not guaranteed to contain a valid mtdids variable when called from mtd_search_alternate_name(). Call get_mtdids() instead of env_get("mtdids").

Fixes ff4afa8a981e ("mtd: uboot: search for an equivalent MTD name with the mtdids")

---

Thanks,
Miquèl

#2 lore raw

PATCH 1/1 mtd: Use get_mtdids() instead of env_get("mtdids") in mtd_search_alternate_name()

Quoted 8 lines · On Sat, 17 Nov 2018 11:59:52 +0100 Miquel Raynal <[email protected]>…

Hi Boris,

Boris Brezillon <[email protected]> wrote on Fri, 16 Nov 2018 23:15:42 +0100:

Quoted 3 lines

The environment is not guaranteed to contain a valid mtdids variable when called from mtd_search_alternate_name(). Call get_mtdids() instead of env_get("mtdids").

Forgot to move board_mtdparts_default(). Please don't apply this patch, I'll send a v2.

Quoted 9 lines
Quoted 4 lines
Fixes ff4afa8a981e ("mtd: uboot: search for an equivalent MTD name with the mtdids")

---

Thanks,
Miquèl