diff mbox series

[v2] libmtd: avoid divide by zero

Message ID 20201127000708.2894-1-chris.packham@alliedtelesis.co.nz
State Accepted
Headers show
Series [v2] libmtd: avoid divide by zero | expand

Commit Message

Chris Packham Nov. 27, 2020, 12:07 a.m. UTC
The concept of erase blocks doesn't apply to mtd-ram devices. Such
devices set MTD_NO_ERASE to indicate this and some report 0 for the
erase block size. Avoid a divide by zero when calculating the erase
block count for such devices.

Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Changes in v2:
- Use MTD_NO_ERASE as suggested by Richard

 lib/libmtd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Richard Weinberger Nov. 27, 2020, 2:03 p.m. UTC | #1
On Fri, Nov 27, 2020 at 1:16 AM Chris Packham
<chris.packham@alliedtelesis.co.nz> wrote:
>
> The concept of erase blocks doesn't apply to mtd-ram devices. Such
> devices set MTD_NO_ERASE to indicate this and some report 0 for the
> erase block size. Avoid a divide by zero when calculating the erase
> block count for such devices.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>

Acked-by: Richard Weinberger <richard@nod.at>
David Oberhollenzer Nov. 29, 2020, 11:04 p.m. UTC | #2
Applied to mtd-utils.git master.

Thanks,

David
diff mbox series

Patch

diff --git a/lib/libmtd.c b/lib/libmtd.c
index 9d8d0e8..b581d80 100644
--- a/lib/libmtd.c
+++ b/lib/libmtd.c
@@ -791,7 +791,10 @@  int mtd_get_dev_info1(libmtd_t desc, int mtd_num, struct mtd_dev_info *mtd)
 		return -1;
 	mtd->writable = !!(ret & MTD_WRITEABLE);
 
-	mtd->eb_cnt = mtd->size / mtd->eb_size;
+	if (ret & MTD_NO_ERASE)
+		mtd->eb_cnt = 1;
+	else
+		mtd->eb_cnt = mtd->size / mtd->eb_size;
 	mtd->type = type_str2int(mtd->type_str);
 	mtd->bb_allowed = !!(mtd->type == MTD_NANDFLASH ||
 				mtd->type == MTD_MLCNANDFLASH);