(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

spi: sunplus: handle signal interruption in transfer wait

wait_for_completion_interruptible_timeout() returns -ERESTARTSYS when interrupted by a signal, 0 on timeout, and positive on success. The previous check was: if (!wait_for_completion_interruptible_timeout(...)) SIGKILL caused the interrupted path to fall through as if the transfer succeeded. The loop then re-entered mutex_lock() on the next iteration, which is TASK_UNINTERRUPTIBLE. The process could not be killed while blocked there. Check ret <= 0 and return -EINTR for the interrupted case so the process can exit promptly on SIGKILL. Signed-off-by: Andrew Gaylard <ag@ffroot.co.za> Link: https://patch.msgid.link/20260820125835.1584270-1-ag@ffroot.co.za Signed-off-by: Mark Brown <broonie@kernel.org>


Author Andrew Gaylard Committer Mark Brown Date Commit Parent 15286799
+9 -4
1 changed file
+9 -4
1 changed file