[PATCH] libmtd: fix mtd_dev_present return value on legacy systems

Guido Martínez guido at vanguardiasur.com.ar
Wed Sep 10 07:56:40 PDT 2014


On legacy systems, if "/proc/mtd" doesn't exist or gives a read error,
mtd_dev_present returns -1 (since it calls legacy_dev_present), contrary
to what's specified in the header file.

This causes checks like

  if (mtd_dev_present(n)) {
    ...
  }

to give false positives. Fix this by comparing the return value to 1.

Signed-off-by: Guido Martínez <guido at vanguardiasur.com.ar>
---
 lib/libmtd.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/libmtd.c b/lib/libmtd.c
index 2089373..aff4c8b 100644
--- a/lib/libmtd.c
+++ b/lib/libmtd.c
@@ -647,9 +647,9 @@ int mtd_dev_present(libmtd_t desc, int mtd_num) {
 	struct stat st;
 	struct libmtd *lib = (struct libmtd *)desc;
 
-	if (!lib->sysfs_supported)
-		return legacy_dev_present(mtd_num);
-	else {
+	if (!lib->sysfs_supported) {
+		return legacy_dev_present(mtd_num) == 1;
+	} else {
 		char file[strlen(lib->mtd) + 10];
 
 		sprintf(file, lib->mtd, mtd_num);
-- 
2.1.0




More information about the linux-mtd mailing list