summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-09-15 16:54:47 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-09-16 22:09:36 +0200
commit992c291e9561381cf86d4a7fc9271c2b60fea0c1 (patch)
tree9f88c189158156d48b670fdc96a0a77c5d48dbb2
parent526a745f688d6c989f28e73a9ffc0372c1279e45 (diff)
downloadbarebox-992c291e9561381cf86d4a7fc9271c2b60fea0c1.tar.gz
barebox-992c291e9561381cf86d4a7fc9271c2b60fea0c1.tar.xz
mtd mtdraw: Fix partial page read
When reading parts of a page we have to limit the maximum bytes copied to the remaining bytes of a page. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
-rw-r--r--drivers/mtd/mtdraw.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mtd/mtdraw.c b/drivers/mtd/mtdraw.c
index d28ae0744e..dab9bbc459 100644
--- a/drivers/mtd/mtdraw.c
+++ b/drivers/mtd/mtdraw.c
@@ -128,7 +128,8 @@ static ssize_t mtdraw_read(struct cdev *cdev, void *buf, size_t count,
skip = offset % (mtd->writesize + mtd->oobsize);
while (ret > 0 && count > 0) {
- toread = min_t(int, count, mtd->writesize + mtd->oobsize);
+ toread = min_t(int, toread,
+ mtd->writesize + mtd->oobsize - skip);
ret = mtdraw_read_unaligned(mtd, buf, toread,
skip, numpage++ * mtd->writesize);
buf += ret;