aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorHolger Brunck <holger.brunck@keymile.com>2011-01-25 06:04:11 -0500
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-01-26 03:13:52 -0500
commitd4c6381303163e774a72db8c172cdc5c23f01588 (patch)
tree2b7a6986c3168b1fc1f17113ac5cc3ef8c320bf1 /drivers/mtd
parent3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff)
UBI: fix NOR erase preparation quirk
In 'nor_erase_prepare()' we want to make sure the UBI headers are corrupted. But it is possible that one of the headers just contains all 0xFFs, which is also OK, because UBI will erase it in case of a power cut. Signed-off-by: Holger Brunck <holger.brunck@keymile.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/ubi/io.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c
index 811775aa8ee8..668d24005106 100644
--- a/drivers/mtd/ubi/io.c
+++ b/drivers/mtd/ubi/io.c
@@ -507,11 +507,13 @@ static int nor_erase_prepare(struct ubi_device *ubi, int pnum)
507 * PEB. 507 * PEB.
508 */ 508 */
509 err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0); 509 err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0);
510 if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) { 510 if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR ||
511 err1 == UBI_IO_FF) {
511 struct ubi_ec_hdr ec_hdr; 512 struct ubi_ec_hdr ec_hdr;
512 513
513 err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0); 514 err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0);
514 if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) 515 if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR ||
516 err1 == UBI_IO_FF)
515 /* 517 /*
516 * Both VID and EC headers are corrupted, so we can 518 * Both VID and EC headers are corrupted, so we can
517 * safely erase this PEB and not afraid that it will be 519 * safely erase this PEB and not afraid that it will be