ANDROID: binder: call poll_wait() unconditionally.
PATCH 1/1 ANDROID: binder: call poll_wait() unconditionally.
Because we're not guaranteed that subsequent calls to poll() will have a poll_table_struct parameter with _qproc set. When _qproc is not set, poll_wait() is a noop, and we won't be woken up correctly.
--- drivers/android/binder.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
drivers/android/binder.c +1 -10
@@ -3623,12 +3623,6 @@ static void binder_stat_br(struct binder_proc *proc, } } -static int binder_has_thread_work (struct binder_thread *thread) -{ -return !binder_worklist_empty (thread->proc, &thread->todo) || - thread->looper_need_return; -} - static int binder_put_node_cmd(struct binder_proc *proc, struct binder_thread *thread, void __user **ptrp,
@@ -4258,12 +4252,9 @@ static unsigned int binder_poll(struct file *filp,binder_inner_proc_unlock (thread->proc); -if (binder_has_work (thread, wait_for_proc_work)) -return POLLIN ; -poll_wait (filp, &thread->wait, wait); -if (binder_has_thread_work (thread)) +if (binder_has_work (thread, wait_for_proc_work))return POLLIN ;return 0 ;
Signature · 1 line
2.14.2.920.gcf0c67979c-goog
Greg KH
maintainerQuoted 9 lines · Martijn Coenen
Because we're not guaranteed that subsequent calls to
poll()will have apoll_table_structparameter with_qprocset. When_qprocis not set,poll_wait()is a noop, and we won't be woken up correctly.Signed-off-by Martijn Coenen <[email protected]>--- drivers/android/binder.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
Does this need to get into 4.14-final, or is 4.15-rc1 ok? I'm a bit lost as to which patches I applied to what tree...
thanks,
greg "drowning in trees" k-h
Quoted 2 lines · Greg KH
Does this need to get into 4.14-final, or is 4.15-rc1 ok? I'm a bit lost as to which patches I applied to what tree...
This fixes a race that is somewhat hard to hit, I've only ever seen it with test code that creates the right conditions. But when it does hit it's pretty bad (process blocks forever), so 4.14 would be my preference. I just looked at v4.14-rc4 and it applied cleanly.
Quoted 4 lines
thanks,
greg "drowning in trees" k-h