block: don't add non-ubifs ubi devices
authorDaniel Golle <daniel@makrotopia.org>
Wed, 28 Jul 2021 16:30:31 +0000 (17:30 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Wed, 28 Jul 2021 19:21:41 +0000 (20:21 +0100)
As they require ubiblock to be mounted, just skip ubi devices in case
they don't contain a ubifs.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
block.c

diff --git a/block.c b/block.c
index c9b61af587cb597e388755a11a23ee13ba0cbeb9..d8398380533447d9fc2c76acf6f82db514a55d47 100644 (file)
--- a/block.c
+++ b/block.c
@@ -483,19 +483,27 @@ static int config_load(char *cfg)
 
 static struct probe_info* _probe_path(char *path)
 {
-       struct probe_info *pr;
+       struct probe_info *pr, *epr;
        char tmppath[64];
 
-       /* skip ubi device if ubiblock device is present */
+       pr = probe_path(path);
+       if (!pr)
+               return NULL;
+
        if (path[5] == 'u' && path[6] == 'b' && path[7] == 'i' &&
            path[8] >= '0' && path[8] <= '9' ) {
+               /* skip ubi device if not UBIFS (as it requires ubiblock) */
+               if (strcmp("ubifs", pr->type))
+                       return NULL;
+
+               /* skip ubi device if ubiblock device is present */
                snprintf(tmppath, sizeof(tmppath), "/dev/ubiblock%s", path + 8);
-               list_for_each_entry(pr, &devices, list)
-                       if (!strcasecmp(pr->dev, tmppath))
+               list_for_each_entry(epr, &devices, list)
+                       if (!strcmp(epr->dev, tmppath))
                                return NULL;
        }
 
-       return probe_path(path);
+       return pr;
 }
 
 static int _cache_load(const char *path)