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: 99adef310f68 ("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:
parent
b74be0fa52
commit
fb5720278e
1 changed files with 4 additions and 0 deletions
|
@ -970,6 +970,7 @@ static int __spi_map_msg(struct spi_controller *ctlr, struct spi_message *msg)
|
|||
else
|
||||
rx_dev = ctlr->dev.parent;
|
||||
|
||||
ret = -ENOMSG;
|
||||
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
||||
if (!ctlr->can_dma(ctlr, msg->spi, xfer))
|
||||
continue;
|
||||
|
@ -993,6 +994,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_msg_mapped = true;
|
||||
|
||||
|
|
Loading…
Reference in a new issue