diff options
author | Gao Pan <pandy.gao@nxp.com> | 2016-11-28 06:02:59 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-11-30 20:45:51 +0300 |
commit | d2ad0a62d4ee235fbfcf7816a0bee5d09da8ddbe (patch) | |
tree | 7dc66050493e02652c311809a184c846880da36b /drivers/spi/spi-fsl-lpspi.c | |
parent | 14de3918eacfc624023775c319e85e6597514195 (diff) | |
download | linux-d2ad0a62d4ee235fbfcf7816a0bee5d09da8ddbe.tar.xz |
spi: fsl-lpspi: use wait_for_completion_timeout() while waiting transfer done
It's a potential problem to use wait_for_completion() because the
completion condition may never come. Thus, it's better to repalce
wait_for_completion() with wait_for_completion_timeout().
Signed-off-by: Gao Pan <pandy.gao@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-fsl-lpspi.c')
-rw-r--r-- | drivers/spi/spi-fsl-lpspi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c index 539c971b9f05..47a97add0639 100644 --- a/drivers/spi/spi-fsl-lpspi.c +++ b/drivers/spi/spi-fsl-lpspi.c @@ -348,7 +348,12 @@ static int fsl_lpspi_transfer_one(struct spi_master *master, reinit_completion(&fsl_lpspi->xfer_done); fsl_lpspi_write_tx_fifo(fsl_lpspi); - wait_for_completion(&fsl_lpspi->xfer_done); + + ret = wait_for_completion_timeout(&fsl_lpspi->xfer_done, HZ); + if (!ret) { + dev_dbg(fsl_lpspi->dev, "wait for completion timeout\n"); + return -ETIMEDOUT; + } ret = fsl_lpspi_txfifo_empty(fsl_lpspi); fsl_lpspi_read_rx_fifo(fsl_lpspi); |