diff options
author | Amit Pundir <amit.pundir@linaro.org> | 2024-05-28 16:34:52 +0530 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2024-05-28 16:37:06 +0530 |
commit | 229199606bcea2a9105aa66159e4d2036e400813 (patch) | |
tree | e75440807b7df8663b13d730f518354c1bd18e67 | |
parent | 106d66002fba0ff78291b5b31c2da752f7d2d07d (diff) |
REGRESSION: Revert "spi: Remove unneded check for orig_nents"rbX-6.10-rc1
This reverts commit 8cc3bad9d9d6a4735a8c8998c6daa1ef31cbf708.
Change-Id: I486bfe8511d2ec38cb3fea35056d2d4f9331976e
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
-rw-r--r-- | drivers/spi/spi.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 289feccca376..a0b897a38b5d 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1208,10 +1208,12 @@ static void spi_unmap_buf_attrs(struct spi_controller *ctlr, enum dma_data_direction dir, unsigned long attrs) { - dma_unmap_sgtable(dev, sgt, dir, attrs); - sg_free_table(sgt); - sgt->orig_nents = 0; - sgt->nents = 0; + if (sgt->orig_nents) { + dma_unmap_sgtable(dev, sgt, dir, attrs); + sg_free_table(sgt); + sgt->orig_nents = 0; + sgt->nents = 0; + } } void spi_unmap_buf(struct spi_controller *ctlr, struct device *dev, @@ -1316,8 +1318,10 @@ static void spi_dma_sync_for_device(struct spi_controller *ctlr, if (!ctlr->cur_msg_mapped) return; - dma_sync_sgtable_for_device(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE); - dma_sync_sgtable_for_device(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE); + if (xfer->tx_sg.orig_nents) + dma_sync_sgtable_for_device(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE); + if (xfer->rx_sg.orig_nents) + dma_sync_sgtable_for_device(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE); } static void spi_dma_sync_for_cpu(struct spi_controller *ctlr, @@ -1329,8 +1333,10 @@ static void spi_dma_sync_for_cpu(struct spi_controller *ctlr, if (!ctlr->cur_msg_mapped) return; - dma_sync_sgtable_for_cpu(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE); - dma_sync_sgtable_for_cpu(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE); + if (xfer->rx_sg.orig_nents) + dma_sync_sgtable_for_cpu(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE); + if (xfer->tx_sg.orig_nents) + dma_sync_sgtable_for_cpu(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE); } #else /* !CONFIG_HAS_DMA */ static inline int __spi_map_msg(struct spi_controller *ctlr, |