Commit 66b83a4c authored by Martijn Coenen's avatar Martijn Coenen Committed by Greg Kroah-Hartman

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.
Signed-off-by: default avatarMartijn Coenen <maco@android.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 33d930e5
...@@ -3662,12 +3662,6 @@ static void binder_stat_br(struct binder_proc *proc, ...@@ -3662,12 +3662,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, static int binder_put_node_cmd(struct binder_proc *proc,
struct binder_thread *thread, struct binder_thread *thread,
void __user **ptrp, void __user **ptrp,
...@@ -4297,12 +4291,9 @@ static unsigned int binder_poll(struct file *filp, ...@@ -4297,12 +4291,9 @@ static unsigned int binder_poll(struct file *filp,
binder_inner_proc_unlock(thread->proc); binder_inner_proc_unlock(thread->proc);
if (binder_has_work(thread, wait_for_proc_work))
return POLLIN;
poll_wait(filp, &thread->wait, wait); poll_wait(filp, &thread->wait, wait);
if (binder_has_thread_work(thread)) if (binder_has_work(thread, wait_for_proc_work))
return POLLIN; return POLLIN;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment