]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
i2c: pnx: Fix timeout in wait functions
authorVladimir Riabchun <ferr.lambarginio@gmail.com>
Fri, 6 Dec 2024 23:19:34 +0000 (00:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jan 2025 12:24:51 +0000 (13:24 +0100)
[ Upstream commit 7363f2d4c18557c99c536b70489187bb4e05c412 ]

Since commit f63b94be6942 ("i2c: pnx: Fix potential deadlock warning
from del_timer_sync() call in isr") jiffies are stored in
i2c_pnx_algo_data.timeout, but wait_timeout and wait_reset are still
using it as milliseconds. Convert jiffies back to milliseconds to wait
for the expected amount of time.

Fixes: f63b94be6942 ("i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr")
Signed-off-by: Vladimir Riabchun <ferr.lambarginio@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-pnx.c

index b6b5a65efcbbc4767373ac57e6cffbe2f9053467..5ff9218b4a62641bd4e09bd8688467625a8d7813 100644 (file)
@@ -95,7 +95,7 @@ enum {
 
 static inline int wait_timeout(struct i2c_pnx_algo_data *data)
 {
-       long timeout = data->timeout;
+       long timeout = jiffies_to_msecs(data->timeout);
        while (timeout > 0 &&
                        (ioread32(I2C_REG_STS(data)) & mstatus_active)) {
                mdelay(1);
@@ -106,7 +106,7 @@ static inline int wait_timeout(struct i2c_pnx_algo_data *data)
 
 static inline int wait_reset(struct i2c_pnx_algo_data *data)
 {
-       long timeout = data->timeout;
+       long timeout = jiffies_to_msecs(data->timeout);
        while (timeout > 0 &&
                        (ioread32(I2C_REG_CTL(data)) & mcntrl_reset)) {
                mdelay(1);