From: Martin Sperl <[email protected]>

When submitting an identical spi_message multiple times via spi_sync
the spi_message.frame_length does not get reset to 0 in __spi_validate
before adding up all spi_transfer.len resulting in
frame_length > actual_length on all but the first spi_sync call.

Signed-off-by: Martin Sperl <[email protected]>
---
 drivers/spi/spi.c |    1 +
 1 file changed, 1 insertion(+)

Found this by chance while finishing the spi_loopback_test driver,
which I am about to submit.

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 20ef469..2b0a8ec 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2131,6 +2131,7 @@ static int __spi_validate(struct spi_device *spi, struct 
spi_message *message)
         * Set transfer tx_nbits and rx_nbits as single transfer default
         * (SPI_NBITS_SINGLE) if it is not set for this transfer.
         */
+       message->frame_length = 0;
        list_for_each_entry(xfer, &message->transfers, transfer_list) {
                message->frame_length += xfer->len;
                if (!xfer->bits_per_word)
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to