In the Linux kernel, the following vulnerability has been resolved: 9p/transfd: p9fdrequest: kick rx thread if EPOLLIN p9readwork() doesn't set Rworksched and doesn't do schedulework(m->rq) if listempty(&m->reqlist). However, if the pipe is full, we need to read more data and this used to work prior to commit aaec5a95d59615 ("piperead: don't wake up the writer if the pipe is still full"). p9readwork() does p9fdread() -> ... -> anonpiperead() which (before the commit above) triggered the unnecessary wakeup. This wakeup calls p9pollwake() which kicks p9pollworkfn() -> p9pollmux(), p9pollmux() will notice EPOLLIN and schedulework(&m->rq). This no longer happens after the optimization above, change p9fdrequest() to use p9poll_mux() instead of only checking for EPOLLOUT.