UBI: erase free PEB with bitflip in EC header
authorMatthieu CASTET <matthieu.castet@parrot.com>
Wed, 22 Aug 2012 14:03:46 +0000 (16:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jun 2014 23:02:06 +0000 (16:02 -0700)
commit 193819cf2e6e395b1e1be2d36785dc5563a6edca upstream.

Without this patch, these PEB are not scrubbed until we put data in them.
Bitflip can accumulate latter and we can loose the EC header (but VID header
should be intact and allow to recover data).

Signed-off-by: Matthieu Castet <matthieu.castet@parrot.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
[bwh: Backported to 3.2: adjust filename, context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Qiang Huang <h.huangqiang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mtd/ubi/scan.c

index 12c43b44f81578a4b78369e5140b66d34d26a188..4f71793f5505811e332ea3dc4e1bc7ad89035bd7 100644 (file)
@@ -997,7 +997,7 @@ static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si,
                        return err;
                goto adjust_mean_ec;
        case UBI_IO_FF:
-               if (ec_err)
+               if (ec_err || bitflips)
                        err = add_to_list(si, pnum, ec, 1, &si->erase);
                else
                        err = add_to_list(si, pnum, ec, 0, &si->free);