]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
i2c: qup: jump out of the loop in case of timeout
authorYang Xiwen <forbidden405@outlook.com>
Sun, 15 Jun 2025 16:01:10 +0000 (00:01 +0800)
committerAndi Shyti <andi.shyti@kernel.org>
Wed, 23 Jul 2025 22:38:01 +0000 (00:38 +0200)
commita7982a14b3012527a9583d12525cd0dc9f8d8934
tree419b6998a44d8764dc1b7d70a86e69fbca536841
parenta663b3c47ab10f66130818cf94eb59c971541c3f
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
drivers/i2c/busses/i2c-qup.c