diff --git a/commands/nand.c b/commands/nand.c index ad1c8c9..c330ad1 100644 --- a/commands/nand.c +++ b/commands/nand.c @@ -90,8 +90,13 @@ } ret = ioctl(fd, MEMSETBADBLOCK, &badblock); - if (ret) - perror("ioctl"); + if (ret) { + if (ret == -EINVAL) + printf("Maybe offset %lld is out of range.\n", + badblock); + else + perror("ioctl"); + } close(fd); return ret; diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c index 9234525..e35571d 100644 --- a/drivers/mtd/core.c +++ b/drivers/mtd/core.c @@ -309,6 +309,9 @@ { int ret; + if (ofs < 0 || ofs >= mtd->size) + return -EINVAL; + if (mtd->block_markbad) ret = mtd->block_markbad(mtd, ofs); else