i2c: xiic: Fix RX IRQ busy check
authorMarek Vasut <marex@denx.de>
Mon, 23 Aug 2021 21:41:45 +0000 (23:41 +0200)
committerWolfram Sang <wsa@kernel.org>
Tue, 14 Sep 2021 10:22:54 +0000 (12:22 +0200)
In case the XIIC does TX/RX transfer, make sure no other kernel thread
can start another TX transfer at the same time. This could happen since
the driver only checks tx_msg for being non-NULL and returns -EBUSY in
that case, however it is necessary to check also rx_msg for the same.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-xiic.c

index 6cd7830..eb789cf 100644 (file)
@@ -543,7 +543,7 @@ static int xiic_busy(struct xiic_i2c *i2c)
        int tries = 3;
        int err;
 
-       if (i2c->tx_msg)
+       if (i2c->tx_msg || i2c->rx_msg)
                return -EBUSY;
 
        /* In single master mode bus can only be busy, when in use by this