]> www.infradead.org Git - mtd-utils.git/commitdiff
libmtd: perform device checking first
authorBrian Norris <computersforpeace@gmail.com>
Wed, 8 Feb 2012 21:26:20 +0000 (13:26 -0800)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Wed, 29 Feb 2012 07:19:17 +0000 (09:19 +0200)
If we don't check for the MTD before calling `legacy_get_dev_info1', we may
get errors like:

libmtd: MTD subsystem is old and does not support sysfs, so MTD character device nodes have to exist
libmtd: error!: "/dev/mtd2" is not a character device
mtdinfo: error!: libmtd failed get MTD device 2 information
         error 22 (Invalid argument)

So reverse the order of these two checks.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
lib/libmtd.c

index 501f3f1100369baa9cbcb354e57c678e7c587435..c4836dfe1f3a82c8f317948006cd7cf4b31d2ea2 100644 (file)
@@ -735,12 +735,11 @@ int mtd_get_dev_info1(libmtd_t desc, int mtd_num, struct mtd_dev_info *mtd)
        memset(mtd, 0, sizeof(struct mtd_dev_info));
        mtd->mtd_num = mtd_num;
 
-       if (!lib->sysfs_supported)
-               return legacy_get_dev_info1(mtd_num, mtd);
-       else if (!mtd_dev_present(desc, mtd_num)) {
+       if (!mtd_dev_present(desc, mtd_num)) {
                errno = ENODEV;
                return -1;
-       }
+       } else if (!lib->sysfs_supported)
+               return legacy_get_dev_info1(mtd_num, mtd);
 
        if (dev_get_major(lib, mtd_num, &mtd->major, &mtd->minor))
                return -1;