Message ID | 20201127000708.2894-1-chris.packham@alliedtelesis.co.nz |
---|---|
State | Accepted |
Headers | show |
Series | [v2] libmtd: avoid divide by zero | expand |
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>
Applied to mtd-utils.git master. Thanks, David
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);
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(-)