Report: mtd-utils: "Floating point exception" with ubiformat

hujianyang hujianyang at huawei.com
Fri Oct 31 03:36:42 PDT 2014


Hi,

Here is an interesting problem. I used a nand flash driver with
wrong partition table and an error like this occurred:

# insmod nandflash.ko

[454096.098834] mtd: partition "ubi1" is out of reach -- disabled


The display of /proc/mtd shows the size of mtd1 is zero:

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 20000000 00020000 "ubi0"
mtd1: 00000000 00000000 "ubi1"
mtd2: 20000000 00020000 "rest"


When performing ubiformat with this mtd1, the utility breaks
down with a message:

# ubiformat /dev/mtd1
Floating point exception


I used to think it is because ubiformat can't deal with a zero
size MTD device. So I want to add something like a error branch
for this. But now I find it is because the "erasesize" in
"/sys/class/mtd/mtd1" is zero.

:/sys/class/mtd/mtd1# cat erasesize
0

So function mtd_get_dev_info1() in lib/libmtd.c, line 777

"""
mtd->eb_cnt = mtd->size / mtd->eb_size;
"""

will crash the program because mtd->eb_size is zero.


Do you think it is a valuable problem to deal with? Keep the
existing logic is OK. But can we add something in mtd-utils
to indicate this error than "Floating point exception"?


Thanks~!

Hu




More information about the linux-mtd mailing list