mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
spi: Don't mark message DMA mapped when no transfer in it is
[ Upstream commit 9f788ba457b45b0ce422943fcec9fa35c4587764 ]
There is no need to set the DMA mapped flag of the message if it has
no mapped transfers. Moreover, it may give the code a chance to take
the wrong paths, i.e. to exercise DMA related APIs on unmapped data.
Make __spi_map_msg() to bail earlier on the above mentioned cases.
Fixes: 99adef310f ("spi: Provide core support for DMA mapping transfers")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://msgid.link/r/20240522171018.3362521-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8dfcd7780d
commit
729fdbfc18
@@ -1147,6 +1147,7 @@ static int __spi_map_msg(struct spi_controller *ctlr, struct spi_message *msg)
|
|||||||
else
|
else
|
||||||
rx_dev = ctlr->dev.parent;
|
rx_dev = ctlr->dev.parent;
|
||||||
|
|
||||||
|
ret = -ENOMSG;
|
||||||
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
||||||
/* The sync is done before each transfer. */
|
/* The sync is done before each transfer. */
|
||||||
unsigned long attrs = DMA_ATTR_SKIP_CPU_SYNC;
|
unsigned long attrs = DMA_ATTR_SKIP_CPU_SYNC;
|
||||||
@@ -1176,6 +1177,9 @@ static int __spi_map_msg(struct spi_controller *ctlr, struct spi_message *msg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* No transfer has been mapped, bail out with success */
|
||||||
|
if (ret)
|
||||||
|
return 0;
|
||||||
|
|
||||||
ctlr->cur_rx_dma_dev = rx_dev;
|
ctlr->cur_rx_dma_dev = rx_dev;
|
||||||
ctlr->cur_tx_dma_dev = tx_dev;
|
ctlr->cur_tx_dma_dev = tx_dev;
|
||||||
|
|||||||
Reference in New Issue
Block a user