s390/ap: Use mutex_lock_killable() in ap_bus_force_rescan()

A deep dive into the AP bus code and zcrypt device driver about the
usage of mutex locking showed that there is one questionable call in
ap_bus.c in function ap_bus_force_rescan(). This function may be
called in kernel and process context. In both contexts only one info
is important: was there a AP bus scan running and did it result in
some updates on the AP devices. So only true/false is returned but no
info like -EINTR. But still the mutex lock call should be
interruptible to be able to kill a user space program blocked forever
on this. So this patch replaces mutex_lock_interruptible() with
mutex_lock_killable() to  be able to handle SIGKILL especially in user
space process context.

Suggested-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Finn Callies <fcallies@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Harald Freudenberger
2026-07-09 09:25:00 +02:00
committed by Vasily Gorbik
parent 6e17a45b3c
commit 2ba7ea7cb0

View File

@@ -1173,8 +1173,8 @@ bool ap_bus_force_rescan(void)
* for the lock which means the other task has finished and
* stored the result in ap_scan_bus_result.
*/
if (mutex_lock_interruptible(&ap_scan_bus_mutex)) {
/* some error occurred, ignore and go out */
if (mutex_lock_killable(&ap_scan_bus_mutex)) {
/* fatal signal received, go out */
goto out;
}
rc = ap_scan_bus_result;