[PATCH 2/2] mtd: when creating bitflips the offset has to be page aligned

Sascha Hauer s.hauer at pengutronix.de
Tue Mar 14 00:10:52 PDT 2017


mtd_peb_create_bitflips() assumes the offset is page aligned. Enforce
this and in the nand_bitlfip command print a warning if it's not
aligned.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 commands/nand-bitflip.c | 4 ++++
 drivers/mtd/peb.c       | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/commands/nand-bitflip.c b/commands/nand-bitflip.c
index fe56f222cf..a8a97c153a 100644
--- a/commands/nand-bitflip.c
+++ b/commands/nand-bitflip.c
@@ -69,6 +69,10 @@ static int do_nand_bitflip(int argc, char *argv[])
 
 	block += mtd_div_by_eb(offset, meminfo.mtd);
 	offset = mtd_mod_by_eb(offset, meminfo.mtd);
+	if ((int)offset % meminfo.mtd->writesize) {
+		printf("offset has to be pagesize aligned\n");
+		return 1;
+	}
 
 	if (!check) {
 		ret = mtd_peb_create_bitflips(meminfo.mtd, block, offset, meminfo.writesize,
diff --git a/drivers/mtd/peb.c b/drivers/mtd/peb.c
index c97697f6f9..c35b63f2fd 100644
--- a/drivers/mtd/peb.c
+++ b/drivers/mtd/peb.c
@@ -565,6 +565,8 @@ int mtd_peb_create_bitflips(struct mtd_info *mtd, int pnum, int offset,
 
 	if (offset < 0 || offset + len > mtd->erasesize)
 		return -EINVAL;
+	if (offset % mtd->writesize)
+		return -EINVAL;
 	if (len <= 0)
 		return -EINVAL;
 	if (num_bitflips <= 0)
-- 
2.11.0




More information about the barebox mailing list