Hi Michal, Does this have any updates? Thanks, Zhiqiang > -----Original Message----- > From: Michal Suchanek [mailto:hramrach@gmail.com] > Sent: 2015年8月14日 18:08 > To: Andrew Murray > Cc: Hou Zhiqiang-B48286; Huang Shijie; David Woodhouse; Brian Norris; Xu > Han-B45815; Rafał Miłecki; Huang Shijie; Ben Hutchings; Marek Vasut; > Gabor Juhos; Bean Huo 霍斌斌,; MTD Maling List; LKML > Subject: Re: [PATCH v4 7/7] mtd: spi-nor: add read loop > > On 14 August 2015 at 12:02, Andrew Murray > wrote: > > On 14 August 2015 at 10:23, Michal Suchanek wrote: > >> mtdblock and ubi do not handle the situation when read returns less > >> data than requested. Loop in spi-nor until buffer is filled or an > >> error is returned. > >> > >> Signed-off-by: Michal Suchanek > >> --- > >> drivers/mtd/spi-nor/spi-nor.c | 20 ++++++++++++++------ > >> 1 file changed, 14 insertions(+), 6 deletions(-) > >> > >> diff --git a/drivers/mtd/spi-nor/spi-nor.c > >> b/drivers/mtd/spi-nor/spi-nor.c index e0ae9cf..246fac7 100644 > >> --- a/drivers/mtd/spi-nor/spi-nor.c > >> +++ b/drivers/mtd/spi-nor/spi-nor.c > >> @@ -738,14 +738,22 @@ static int spi_nor_read(struct mtd_info *mtd, > loff_t from, size_t len, > >> if (ret) > >> return ret; > >> > >> - ret = nor->read(nor, from, len, buf); > >> + while (len) { > >> + ret = nor->read(nor, from, len, buf); > >> + if (ret <= 0) > >> + goto read_err; > >> + > >> + BUG_ON(ret > len); > >> + *retlen += ret; > > > > Is *retlen initialized to 0 anywhere? > > It's initialized in mtdcore and passed into mtd->_read. > > Yes, the interface is really awkward. > > int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t > *retlen, > u_char *buf) > { > int ret_code; > *retlen = 0; > > > Thanks > > Michal {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I