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