浏览代码

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: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Martin Sperl 9 年之前
父节点
当前提交
77e8058810
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      drivers/spi/spi.c

+ 1 - 0
drivers/spi/spi.c

@@ -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)