| From 87bcae8ca8b89f984c6b204597cb1859714af395 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 27 Jun 2024 13:14:48 +0200 |
| Subject: i2c: testunit: discard write requests while old command is running |
| |
| From: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| |
| [ Upstream commit c116deafd1a5cc1e9739099eb32114e90623209c ] |
| |
| When clearing registers on new write requests was added, the protection |
| for currently running commands was missed leading to concurrent access |
| to the testunit registers. Check the flag beforehand. |
| |
| Fixes: b39ab96aa894 ("i2c: testunit: add support for block process calls") |
| Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Reviewed-by: Andi Shyti <andi.shyti@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/i2c/i2c-slave-testunit.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c-slave-testunit.c |
| index 1beae30c418b8..cd0d87b089fec 100644 |
| --- a/drivers/i2c/i2c-slave-testunit.c |
| +++ b/drivers/i2c/i2c-slave-testunit.c |
| @@ -121,6 +121,9 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client, |
| break; |
| |
| case I2C_SLAVE_WRITE_REQUESTED: |
| + if (test_bit(TU_FLAG_IN_PROCESS, &tu->flags)) |
| + return -EBUSY; |
| + |
| memset(tu->regs, 0, TU_NUM_REGS); |
| tu->reg_idx = 0; |
| break; |
| -- |
| 2.43.0 |
| |