mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
spi: tegra210-quad: Protect curr_xfer clearing in tegra_qspi_non_combined_seq_xfer
Protect the curr_xfer clearing in tegra_qspi_non_combined_seq_xfer()
with the spinlock to prevent a race with the interrupt handler that
reads this field to check if a transfer is in progress.
Fixes: b4e002d8a7 ("spi: tegra210-quad: Fix timeout handling")
Signed-off-by: Breno Leitao <leitao@debian.org>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://patch.msgid.link/20260126-tegra_xfer-v2-5-6d2115e4f387@debian.org
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bf4528ab28
commit
6d7723e816
|
|
@ -1288,6 +1288,7 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,
|
|||
struct spi_transfer *transfer;
|
||||
bool is_first_msg = true;
|
||||
int ret = 0, val = 0;
|
||||
unsigned long flags;
|
||||
|
||||
msg->status = 0;
|
||||
msg->actual_length = 0;
|
||||
|
|
@ -1368,7 +1369,9 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,
|
|||
msg->actual_length += xfer->len + dummy_bytes;
|
||||
|
||||
complete_xfer:
|
||||
spin_lock_irqsave(&tqspi->lock, flags);
|
||||
tqspi->curr_xfer = NULL;
|
||||
spin_unlock_irqrestore(&tqspi->lock, flags);
|
||||
|
||||
if (ret < 0) {
|
||||
tegra_qspi_transfer_end(spi);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user