diff options
author | Yang Xiwen <forbidden405@outlook.com> | 2025-06-16 00:01:10 +0800 |
---|---|---|
committer | Andi Shyti <andi.shyti@kernel.org> | 2025-07-24 00:38:01 +0200 |
commit | a7982a14b3012527a9583d12525cd0dc9f8d8934 (patch) | |
tree | 419b6998a44d8764dc1b7d70a86e69fbca536841 /rust/helpers/workqueue.c | |
parent | a663b3c47ab10f66130818cf94eb59c971541c3f (diff) |
i2c: qup: jump out of the loop in case of timeout
Original logic only sets the return value but doesn't jump out of the
loop if the bus is kept active by a client. This is not expected. A
malicious or buggy i2c client can hang the kernel in this case and
should be avoided. This is observed during a long time test with a
PCA953x GPIO extender.
Fix it by changing the logic to not only sets the return value, but also
jumps out of the loop and return to the caller with -ETIMEDOUT.
Fixes: fbfab1ab0658 ("i2c: qup: reorganization of driver code to remove polling for qup v1")
Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
Cc: <stable@vger.kernel.org> # v4.17+
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250616-qca-i2c-v1-1-2a8d37ee0a30@outlook.com
Diffstat (limited to 'rust/helpers/workqueue.c')
0 files changed, 0 insertions, 0 deletions