summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorAlice Ryhl <aliceryhl@google.com>2026-10-16 14:11:04 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-10-18 10:22:54 +0200
commit985955d8e6b2b15cfd65b7ac6893e3a5a90c5870 (patch)
tree399ad055e342c9aeca3bc6fa2d3b176a2e2f8d2f /tools/perf/scripts/python
parent9de32b62bc6c250372820414a90d577df7fe435a (diff)
downloadlwn-985955d8e6b2b15cfd65b7ac6893e3a5a90c5870.tar.gz
lwn-985955d8e6b2b15cfd65b7ac6893e3a5a90c5870.zip
rust_binder: wake epoll on self-work queued to poll thread
When a thread pushes work to its own todo list, InnerThread::push_work() returns PushWorkRes::OkNotifyPoll if the thread uses epoll, but four call sites in thread.rs discard this return value. As a result, a non-blocking BC_* write that enqueues work onto the calling thread's todo list without also reading will not wake epoll. Check the return value and call self.process.notify_poll(false) when PushWorkRes::OkNotifyPoll is returned. This is similar to commit 97830f3c3088 ("binder: signal epoll threads of self-work"), but in C Binder pending thread work also prevented subsequent process work from waking epoll, causing a permanent hang, which is not the case in Rust Binder. This means that in practice, it merely delays notifications rather than completely failing to send them. Cc: stable@kernel.org Fixes: dbb17c9ea756 ("rust_binder: move (e)poll wait queue to Process") Reported-by: Poil Zero <poilandgginchi@gmail.com> Signed-off-by: Alice Ryhl <aliceryhl@google.com> Link: https://patch.msgid.link/20261016-binder-poll-self-work-v1-1-c29c87d99abb@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions