The kernel refuses to read more data from a MTD device than the device
size. However, mtd_debug does not check the amount of data read as
returned by read(2) and assumes the requested amount is always read when
there is no error. Reading 8M data from a 4M flash chip results in 8M
file containing the flash data at the start.
Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
perror("read()");
goto err2;
}
- err = write(outfd, buf, size);
+ if (err < size) {
+ fprintf(stderr, "%s: short read, requested %#x, read %#x\n", __func__, size, err);
+ }
+ err = write(outfd, buf, err);
if (err < 0) {
fprintf(stderr, "%s: write, size %#x, n %#x\n", __func__, size, n);
perror("write()");