diff --git a/drivers/mtd/mtdraw.c b/drivers/mtd/mtdraw.c index b1cce3d..7abe235 100644 --- a/drivers/mtd/mtdraw.c +++ b/drivers/mtd/mtdraw.c @@ -191,8 +191,9 @@ } if (mtdraw->write_fill == bsz) { - ret = mtdraw_blkwrite(mtd, mtdraw->writebuf, mtdraw->write_ofs); - retlen += ret; + numpage = mtdraw->write_ofs / (mtd->writesize + mtd->oobsize); + ret = mtdraw_blkwrite(mtd, mtdraw->writebuf, + mtd->writesize * numpage); mtdraw->write_fill = 0; } @@ -208,6 +209,7 @@ if (ret >= 0 && count) { mtdraw->write_ofs = offset - mtdraw->write_fill; mtdraw_fillbuf(mtdraw, buf + retlen, count); + retlen += count; } if (ret < 0) {