Skip to content

Commit 26cfc0d

Browse files
wqyoungbroonie
authored andcommitted
spi: spi-zynq-qspi: use wait_for_completion_timeout to make zynq_qspi_exec_mem_op not interruptible
The function wait_for_completion_interruptible_timeout will return -ERESTARTSYS immediately when receiving SIGKILL signal which is sent by "jffs2_gcd_mtd" during umounting jffs2. This will break the SPI memory operation because the data transmitting may begin before the command or address transmitting completes. Use wait_for_completion_timeout to prevent the process from being interruptible. Fixes: 67dca5e ("spi: spi-mem: Add support for Zynq QSPI controller") Signed-off-by: Quanyang Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 0f887ac commit 26cfc0d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

drivers/spi/spi-zynq-qspi.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,
545545
zynq_qspi_write_op(xqspi, ZYNQ_QSPI_FIFO_DEPTH, true);
546546
zynq_qspi_write(xqspi, ZYNQ_QSPI_IEN_OFFSET,
547547
ZYNQ_QSPI_IXR_RXTX_MASK);
548-
if (!wait_for_completion_interruptible_timeout(&xqspi->data_completion,
548+
if (!wait_for_completion_timeout(&xqspi->data_completion,
549549
msecs_to_jiffies(1000)))
550550
err = -ETIMEDOUT;
551551
}
@@ -563,7 +563,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,
563563
zynq_qspi_write_op(xqspi, ZYNQ_QSPI_FIFO_DEPTH, true);
564564
zynq_qspi_write(xqspi, ZYNQ_QSPI_IEN_OFFSET,
565565
ZYNQ_QSPI_IXR_RXTX_MASK);
566-
if (!wait_for_completion_interruptible_timeout(&xqspi->data_completion,
566+
if (!wait_for_completion_timeout(&xqspi->data_completion,
567567
msecs_to_jiffies(1000)))
568568
err = -ETIMEDOUT;
569569
}
@@ -579,7 +579,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,
579579
zynq_qspi_write_op(xqspi, ZYNQ_QSPI_FIFO_DEPTH, true);
580580
zynq_qspi_write(xqspi, ZYNQ_QSPI_IEN_OFFSET,
581581
ZYNQ_QSPI_IXR_RXTX_MASK);
582-
if (!wait_for_completion_interruptible_timeout(&xqspi->data_completion,
582+
if (!wait_for_completion_timeout(&xqspi->data_completion,
583583
msecs_to_jiffies(1000)))
584584
err = -ETIMEDOUT;
585585

@@ -603,7 +603,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,
603603
zynq_qspi_write_op(xqspi, ZYNQ_QSPI_FIFO_DEPTH, true);
604604
zynq_qspi_write(xqspi, ZYNQ_QSPI_IEN_OFFSET,
605605
ZYNQ_QSPI_IXR_RXTX_MASK);
606-
if (!wait_for_completion_interruptible_timeout(&xqspi->data_completion,
606+
if (!wait_for_completion_timeout(&xqspi->data_completion,
607607
msecs_to_jiffies(1000)))
608608
err = -ETIMEDOUT;
609609
}

0 commit comments

Comments
 (0)