]> www.infradead.org Git - mtd-utils.git/commitdiff
libmtd: avoid divide by zero
authorChris Packham <chris.packham@alliedtelesis.co.nz>
Fri, 27 Nov 2020 00:07:08 +0000 (13:07 +1300)
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>
Sun, 29 Nov 2020 22:39:41 +0000 (23:39 +0100)
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>
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
lib/libmtd.c

index 9d8d0e83d5b0656c5cddc33a271fbca0c8d74ccb..b581d80092cb1b4a25ad5f289db0828bb1f130f5 100644 (file)
@@ -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);