summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert+renesas@glider.be>2018-09-05 10:49:39 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-10-10 08:52:07 +0200
commit3851c90a348ca177d2fd3d7f3dde549f379235ef (patch)
tree6ea3bbf52ab870c874185c5063bfb1c9807c14de /include/linux
parent3613559be6e456328fed06633d6114598679e9e0 (diff)
spi: rspi: Fix interrupted DMA transfers
commit 8dbbaa47b96f6ea5f09f922b4effff3c505cd8cf upstream. When interrupted, wait_event_interruptible_timeout() returns -ERESTARTSYS, and the SPI transfer in progress will fail, as expected: m25p80 spi0.0: SPI transfer failed: -512 spi_master spi0: failed to transfer one message from queue However, as the underlying DMA transfers may not have completed, all subsequent SPI transfers may start to fail: spi_master spi0: receive timeout qspi_transfer_out_in() returned -110 m25p80 spi0.0: SPI transfer failed: -110 spi_master spi0: failed to transfer one message from queue Fix this by calling dmaengine_terminate_all() not only for timeouts, but also for errors. This can be reproduced on r8a7991/koelsch, using "hd /dev/mtd0" followed by CTRL-C. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions