io_uring/waitid: honor task_work cancellation
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.18.52, 7.2.4
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: honor task_work cancellation io_waitid_cb() may run through the fallback task_work path when task_work_add() can no longer queue work to the originating task. The fallback runs from a kworker and io_uring marks such task work as canceled through tw.cancel. io_waitid_cb() currently ignores tw.cancel and calls __do_wait(). waitid is task-context dependent: __do_wait() performs child lookup relative to current, and the retry path also uses current->signal->wait_chldexit. If the callback runs from the fallback kworker, current is therefore not the task that submitted the request. Honor tw.cancel before entering __do_wait(). Complete the request with -ECANCELED and skip the siginfo copy, since canceled task work may run without the submitting task's userspace execution context. Keep the existing siginfo handling for normal waitid completion and explicit cancellation.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From f31ecf671ddc498f20219453395794ff2383e06b · fixed in 0879697520abda2383ed7be40572ad583b5c4b02; From f31ecf671ddc498f20219453395794ff2383e06b · fixed in 7bc98e2de8c58a2bfaf0f540eb096a386ecfc96c; From f31ecf671ddc498f20219453395794ff2383e06b · fixed in 14572de82e5022899e5856008bc9cac97004a88c
- Linux Linux
6.7
- KernelLinux
From 6.7.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.4