On Thu, Mar 11, 2021 at 10:46 AM Li Li <dualli@xxxxxxxxxxxx> wrote: > > From: Marco Ballesio <balejs@xxxxxxxxxx> > > 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 <balejs@xxxxxxxxxx> > Signed-off-by: Li Li <dualli@xxxxxxxxxx> Acked-by: Todd Kjos <tkjos@xxxxxxxxxx> > --- > 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 > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel