spi: Ensure the io_mutex is held until spi_finalize_current_message()
authorDavid Jander <david@protonic.nl>
Tue, 21 Jun 2022 06:12:33 +0000 (08:12 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 27 Jun 2022 12:27:25 +0000 (13:27 +0100)
commit69fa95905d40846756d22402690ddf5361a9d13b
tree08eb639a0785fd1564e05e2664532164917d2f28
parent72c5c59b659d54d0c824d0333a211f373316361d
spi: Ensure the io_mutex is held until spi_finalize_current_message()

This patch introduces a completion that is completed in
spi_finalize_current_message() and waited for in
__spi_pump_transfer_message(). This way all manipulation of ctlr->cur_msg
is done with the io_mutex held and strictly ordered:
__spi_pump_transfer_message() will not return until
spi_finalize_current_message() is done using ctlr->cur_msg, and its
calling context is only touching ctlr->cur_msg after returning.
Due to this, we can safely drop the spin-locks around ctlr->cur_msg.

Signed-off-by: David Jander <david@protonic.nl>
Link: https://lore.kernel.org/r/20220621061234.3626638-11-david@protonic.nl
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h