Skip to content

Commit 947e6c7

Browse files
leitaogregkh
authored andcommitted
spi: tegra210-quad: Protect curr_xfer clearing in tegra_qspi_non_combined_seq_xfer
[ Upstream commit 6d7723e ] 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: b4e002d ("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 6fd4461 commit 947e6c7

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

drivers/spi/spi-tegra210-quad.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,7 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,
12001200
struct spi_transfer *transfer;
12011201
bool is_first_msg = true;
12021202
int ret = 0, val = 0;
1203+
unsigned long flags;
12031204

12041205
msg->status = 0;
12051206
msg->actual_length = 0;
@@ -1271,7 +1272,9 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,
12711272
msg->actual_length += xfer->len + dummy_bytes;
12721273

12731274
complete_xfer:
1275+
spin_lock_irqsave(&tqspi->lock, flags);
12741276
tqspi->curr_xfer = NULL;
1277+
spin_unlock_irqrestore(&tqspi->lock, flags);
12751278

12761279
if (ret < 0) {
12771280
tegra_qspi_transfer_end(spi);

0 commit comments

Comments
 (0)