From: Michal Suchanek Date: Mon, 27 Jul 2015 13:47:10 +0000 (+0200) Subject: mtd-utils: mtd_debug: check amount of data read. X-Git-Tag: v2.0.0-rc1~43 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a2d188795599846bc8f085418467b794881e7209;p=mtd-utils.git mtd-utils: mtd_debug: check amount of data read. 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 Signed-off-by: Richard Weinberger --- diff --git a/misc-utils/mtd_debug.c b/misc-utils/mtd_debug.c index d6993ce..f3826cf 100644 --- a/misc-utils/mtd_debug.c +++ b/misc-utils/mtd_debug.c @@ -141,7 +141,10 @@ retry: 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()");