summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2016-04-26 00:13:22 +0200
committerBrian Norris <computersforpeace@gmail.com>2016-07-13 10:28:07 -0700
commite4c8885bddac201ba0ef88560d6444f39e1ff870 (patch)
tree4d70d534a14ab146f54e1cd26bcdb7f71cb8b378 /lib
parentd9076259b7f2654599bdf3416ec8ce0ad3b22610 (diff)
libmtd: Fix return status in mtd_torture test function
This patch fixes the return status of the mtd_torture function in libmtd. The torture test function is currently only used by the ubiformat utility to check if a block is bad after a write fails (blocks are marked bad if the function returns an error status). However, the way the function was written, it ALWAYS returns an error value regardless of whether it failed or not. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> Signed-off-by: Richard Weinberger <richard@nod.at> Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/libmtd.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/libmtd.c b/lib/libmtd.c
index bf6d71f..1717468 100644
--- a/lib/libmtd.c
+++ b/lib/libmtd.c
@@ -939,7 +939,7 @@ static uint8_t patterns[] = {0xa5, 0x5a, 0x0};
* @patt: the pattern to check
* @size: buffer size in bytes
*
- * This function returns %1 in there are only @patt bytes in @buf, and %0 if
+ * This function returns %0 if there are only @patt bytes in @buf, and %-1 if
* something else was also found.
*/
static int check_pattern(const void *buf, uint8_t patt, int size)
@@ -948,8 +948,8 @@ static int check_pattern(const void *buf, uint8_t patt, int size)
for (i = 0; i < size; i++)
if (((const uint8_t *)buf)[i] != patt)
- return 0;
- return 1;
+ return -1;
+ return 0;
}
int mtd_torture(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb)
@@ -973,7 +973,7 @@ int mtd_torture(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb)
goto out;
err = check_pattern(buf, 0xFF, mtd->eb_size);
- if (err == 0) {
+ if (err) {
errmsg("erased PEB %d, but a non-0xFF byte found", eb);
errno = EIO;
goto out;
@@ -992,7 +992,7 @@ int mtd_torture(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb)
goto out;
err = check_pattern(buf, patterns[i], mtd->eb_size);
- if (err == 0) {
+ if (err) {
errmsg("pattern %x checking failed for PEB %d",
patterns[i], eb);
errno = EIO;
@@ -1005,7 +1005,7 @@ int mtd_torture(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb)
out:
free(buf);
- return -1;
+ return err;
}
int mtd_is_bad(const struct mtd_dev_info *mtd, int fd, int eb)