Consider a message size limit when calculating the maximum amount of data that can be read. Signed-off-by: Chuanhua Han <chuanhua.han@xxxxxxx> --- drivers/mtd/devices/m25p80.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index e84563d..87efa56 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -128,7 +128,12 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len, op.dummy.nbytes = (nor->read_dummy * op.dummy.buswidth) / 8; while (remaining) { - op.data.nbytes = remaining < UINT_MAX ? remaining : UINT_MAX; + op.data.nbytes = min3(remaining, + spi_max_transfer_size(flash->spimem->spi), + spi_max_message_size(flash->spimem->spi) - + sizeof(op.cmd.opcode) - + op.addr.nbytes - + op.dummy.nbytes); ret = spi_mem_adjust_op_size(flash->spimem, &op); if (ret) return ret; -- 2.7.4 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/