Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77e80588 authored by Martin Sperl's avatar Martin Sperl Committed by Mark Brown
Browse files

spi: bugfix: spi_message.transfer_length does not get reset



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: default avatarMartin Sperl <kernel@martin.sperl.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8005c49d
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -2130,6 +2130,7 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
	 * Set transfer tx_nbits and rx_nbits as single transfer default
	 * Set transfer tx_nbits and rx_nbits as single transfer default
	 * (SPI_NBITS_SINGLE) if it is not set for this transfer.
	 * (SPI_NBITS_SINGLE) if it is not set for this transfer.
	 */
	 */
	message->frame_length = 0;
	list_for_each_entry(xfer, &message->transfers, transfer_list) {
	list_for_each_entry(xfer, &message->transfers, transfer_list) {
		message->frame_length += xfer->len;
		message->frame_length += xfer->len;
		if (!xfer->bits_per_word)
		if (!xfer->bits_per_word)