ubi: fastmap: Fix inverted logic in seen selfcheck
authorSascha Hauer <s.hauer@pengutronix.de>
Wed, 23 Oct 2019 09:58:12 +0000 (11:58 +0200)
committerRichard Weinberger <richard@nod.at>
Thu, 16 Jan 2020 22:34:50 +0000 (23:34 +0100)
set_seen() sets the bit corresponding to the PEB number in the bitmap,
so when self_check_seen() wants to find PEBs that haven't been seen we
have to print the PEBs that have their bit cleared, not the ones which
have it set.

Fixes: 5d71afb00840 ("ubi: Use bitmaps in Fastmap self-check code")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/fastmap.c

index 1c7be4e..ac78e7a 100644 (file)
@@ -64,7 +64,7 @@ static int self_check_seen(struct ubi_device *ubi, unsigned long *seen)
                return 0;
 
        for (pnum = 0; pnum < ubi->peb_count; pnum++) {
-               if (test_bit(pnum, seen) && ubi->lookuptbl[pnum]) {
+               if (!test_bit(pnum, seen) && ubi->lookuptbl[pnum]) {
                        ubi_err(ubi, "self-check failed for PEB %d, fastmap didn't see it", pnum);
                        ret = -EINVAL;
                }