]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
spi: bcm2835aux: remove dangerous uncontrolled read of fifo
authorMartin Sperl <kernel@martin.sperl.org>
Sat, 30 Mar 2019 09:30:59 +0000 (09:30 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Sep 2019 09:32:19 +0000 (10:32 +0100)
[ Upstream commit c7de8500fd8ecbb544846dd5f11dca578c3777e1 ]

This read of the fifo is a potential candidate for a race condition
as the spi transfer is not necessarily finished and so can lead to
an early read of the fifo that still misses data.

So it has been removed.

Fixes: 1ea29b39f4c812ec ("spi: bcm2835aux: add bcm2835 auxiliary spi device...")
Suggested-by: Hubert Denkmair <h.denkmair@intence.de>
Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/spi/spi-bcm2835aux.c

index 97cb3beb9cc628b4c4f2988c80cea1dbbd9d4daa..4454d9c6a3dd40dbfbb26178a01afc6bfde57dde 100644 (file)
@@ -194,13 +194,6 @@ static void bcm2835aux_spi_transfer_helper(struct bcm2835aux_spi *bs)
                  BCM2835_AUX_SPI_STAT_TX_FULL))) {
                bcm2835aux_wr_fifo(bs);
        }
-
-       /* and check if we have reached "done" */
-       while (bs->rx_len &&
-              (!(bcm2835aux_rd(bs, BCM2835_AUX_SPI_STAT) &
-                 BCM2835_AUX_SPI_STAT_BUSY))) {
-               bcm2835aux_rd_fifo(bs);
-       }
 }
 
 static irqreturn_t bcm2835aux_spi_interrupt(int irq, void *dev_id)