In the Linux kernel, the following vulnerability has been resolved:
9p/transfd: p9fd_request: kick rx thread if EPOLLIN
p9readwork() doesn't set Rworksched and doesn't do schedulework(m->rq) if listempty(&m->req_list).
However, if the pipe is full, we need to read more data and this used to work prior to commit aaec5a95d59615 ("pipe_read: 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 p9pollmux() instead of only checking for EPOLLOUT.
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/40xxx/CVE-2025-40305.json"
}