Message ID | 0e38d1ed-af5c-160f-e02a-f1433c507d23@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/28/2016 07:58 AM, Heiner Kallweit wrote: > Consider a message size limit when calculating the maximum amount > of data that can be read. > > The message size limit has been introduced with 4.9, so cc it > to stable. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > Cc: <stable@vger.kernel.org> # 4.9.x > --- > v2: > - This patch was part of a series and the other patches of the > series went into 4.9. It's needed to correctly support > reads > 64k on fsl-espi as first user of spi_max_message_size. > See commit 02a595d5d6e4 ("spi: fsl-espi: eliminate spi nor > flash read loop"). CC it to stable. Does this imply that we have to fix every single driver this way ? > --- > drivers/mtd/devices/m25p80.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c > index 9cf7fcd..16a7df2 100644 > --- a/drivers/mtd/devices/m25p80.c > +++ b/drivers/mtd/devices/m25p80.c > @@ -172,7 +172,8 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len, > > t[1].rx_buf = buf; > t[1].rx_nbits = m25p80_rx_nbits(nor); > - t[1].len = min(len, spi_max_transfer_size(spi)); > + t[1].len = min3(len, spi_max_transfer_size(spi), > + spi_max_message_size(spi) - t[0].len); > spi_message_add_tail(&t[1], &m); > > ret = spi_sync(spi, &m); >
On Sat, Oct 29, 2016 at 07:59:09PM +0200, Marek Vasut wrote: > On 10/28/2016 07:58 AM, Heiner Kallweit wrote: > > - This patch was part of a series and the other patches of the > > series went into 4.9. It's needed to correctly support > > reads > 64k on fsl-espi as first user of spi_max_message_size. > > See commit 02a595d5d6e4 ("spi: fsl-espi: eliminate spi nor > > flash read loop"). CC it to stable. > Does this imply that we have to fix every single driver this way ? Ideally. Any SPI driver that has an upper limit really ought to export it, and any driver that might bump into one of those limits should check. A lot of drivers are either unlikely to be deployed in a system that has relevant limits or tend to only do short enough transfers though - if systems are currently working it's just neatening things up really.
Am 28.10.2016 um 07:58 schrieb Heiner Kallweit: > Consider a message size limit when calculating the maximum amount > of data that can be read. > > The message size limit has been introduced with 4.9, so cc it > to stable. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > Cc: <stable@vger.kernel.org> # 4.9.x > --- > v2: > - This patch was part of a series and the other patches of the > series went into 4.9. It's needed to correctly support > reads > 64k on fsl-espi as first user of spi_max_message_size. > See commit 02a595d5d6e4 ("spi: fsl-espi: eliminate spi nor > flash read loop"). CC it to stable. > --- > drivers/mtd/devices/m25p80.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c > index 9cf7fcd..16a7df2 100644 > --- a/drivers/mtd/devices/m25p80.c > +++ b/drivers/mtd/devices/m25p80.c > @@ -172,7 +172,8 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len, > > t[1].rx_buf = buf; > t[1].rx_nbits = m25p80_rx_nbits(nor); > - t[1].len = min(len, spi_max_transfer_size(spi)); > + t[1].len = min3(len, spi_max_transfer_size(spi), > + spi_max_message_size(spi) - t[0].len); > spi_message_add_tail(&t[1], &m); > > ret = spi_sync(spi, &m); > This one is still open and there have been reports already from people facing this issue. Can we still get it into 4.10 + into 4.9 ? Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index 9cf7fcd..16a7df2 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -172,7 +172,8 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len, t[1].rx_buf = buf; t[1].rx_nbits = m25p80_rx_nbits(nor); - t[1].len = min(len, spi_max_transfer_size(spi)); + t[1].len = min3(len, spi_max_transfer_size(spi), + spi_max_message_size(spi) - t[0].len); spi_message_add_tail(&t[1], &m); ret = spi_sync(spi, &m);
Consider a message size limit when calculating the maximum amount of data that can be read. The message size limit has been introduced with 4.9, so cc it to stable. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Cc: <stable@vger.kernel.org> # 4.9.x --- v2: - This patch was part of a series and the other patches of the series went into 4.9. It's needed to correctly support reads > 64k on fsl-espi as first user of spi_max_message_size. See commit 02a595d5d6e4 ("spi: fsl-espi: eliminate spi nor flash read loop"). CC it to stable. --- drivers/mtd/devices/m25p80.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)