From: Marco Ballesio <bal...@google.com>

when interrupted by a signal, binder_wait_for_work currently returns
-ERESTARTSYS. This error code isn't propagated to user space, but a way
to handle interruption due to signals must be provided to code using
this API.

Replace this instance of -ERESTARTSYS with -EINTR, which is propagated
to user space.

Test: built, booted, interrupted a worker thread within
binder_wait_for_work
Signed-off-by: Marco Ballesio <bal...@google.com>
Signed-off-by: Li Li <dua...@google.com>
---
 drivers/android/binder.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 9ec3ba038652..34c3e430a270 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -3710,7 +3710,7 @@ static int binder_wait_for_work(struct binder_thread 
*thread,
                binder_inner_proc_lock(proc);
                list_del_init(&thread->waiting_thread_node);
                if (signal_pending(current)) {
-                       ret = -ERESTARTSYS;
+                       ret = -EINTR;
                        break;
                }
        }
@@ -4851,7 +4851,7 @@ static long binder_ioctl(struct file *filp, unsigned int 
cmd, unsigned long arg)
        if (thread)
                thread->looper_need_return = false;
        wait_event_interruptible(binder_user_error_wait, 
binder_stop_on_user_error < 2);
-       if (ret && ret != -ERESTARTSYS)
+       if (ret && ret != -EINTR)
                pr_info("%d:%d ioctl %x %lx returned %d\n", proc->pid, 
current->pid, cmd, arg, ret);
 err_unlocked:
        trace_binder_ioctl_done(ret);
-- 
2.31.0.rc1.246.gcd05c9c855-goog

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to