spi: davinci: fix spurious i/o error
davinci_spi_bufs() uses wait_for_completion_interruptible() without bothering to handle -ERESTARTSYS. Due to this, sometime, it returns prematurely when a signal is received. Since the return value is never checked, userspace eventually receives a spurious -EIO. To fix this, use un-interruptible wait_for_completion_timeout(). Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
8005c49d9a
commit
7f3ac71ac3
|
@ -703,7 +703,8 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
|
||||
/* Wait for the transfer to complete */
|
||||
if (spicfg->io_type != SPI_IO_TYPE_POLL) {
|
||||
wait_for_completion_interruptible(&(dspi->done));
|
||||
if (wait_for_completion_timeout(&dspi->done, HZ) == 0)
|
||||
errors = SPIFLG_TIMEOUT_MASK;
|
||||
} else {
|
||||
while (dspi->rcount > 0 || dspi->wcount > 0) {
|
||||
errors = davinci_spi_process_events(dspi);
|
||||
|
|
Loading…
Reference in New Issue