On Thu, Mar 11, 2021 at 10:46 AM Li Li <dua...@chromium.org> wrote: > > 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>
Acked-by: Todd Kjos <tk...@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 76ea558df03e..38bbf9a4ce99 100644 > --- a/drivers/android/binder.c > +++ b/drivers/android/binder.c > @@ -3712,7 +3712,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; > } > } > @@ -4855,7 +4855,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.rc2.261.g7f71774620-goog >