]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
i2c: xiic: Fix RX IRQ busy check
authorMarek Vasut <marex@denx.de>
Mon, 23 Aug 2021 21:41:45 +0000 (23:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:08:08 +0000 (15:08 +0200)
[ Upstream commit 294b29f15469e90893c2b72a738a962ee02a12eb ]

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>
Stable-dep-of: 1d4a1adbed25 ("i2c: xiic: Try re-initialization on bus busy timeout")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-xiic.c

index c6447b2769f9d3481d9a3d1685d67e9309ecfb61..b91ea900aae3a00e789a678fdfd8c101833c2e00 100644 (file)
@@ -545,7 +545,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