diff mbox

spi: bugfix: spi_message.transfer_length does not get reset

Message ID 1448627469-2240-1-git-send-email-kernel@martin.sperl.org (mailing list archive)
State Accepted
Commit 77e8058810303e5c18b462adb4f761dbb4f3b657
Headers show

Commit Message

Martin Sperl Nov. 27, 2015, 12:31 p.m. UTC
From: Martin Sperl <kernel@martin.sperl.org>

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 <kernel@martin.sperl.org>
---
 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 mbox

Patch

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)