rxrpc: Fix call removal to use RCU safe deletion
- 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 5.10.258, 5.15.209, 6.1.175, 6.6.135, 6.12.82, and 2 more
- 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: rxrpc: Fix call removal to use RCU safe deletion Fix rxrpc call removal from the rxnet->calls list to use list_del_rcu() rather than list_del_init() to prevent stuffing up reading /proc/net/rxrpc/calls from potentially getting into an infinite loop. This, however, means that list_empty() no longer works on an entry that's been deleted from the list, making it harder to detect prior deletion. Fix this by: Firstly, make rxrpc_destroy_all_calls() only dump the first ten calls that are unexpectedly still on the list. Limiting the number of steps means there's no need to call cond_resched() or to remove calls from the list here, thereby eliminating the need for rxrpc_put_call() to check for that. rxrpc_put_call() can then be fixed to unconditionally delete the call from the list as it is the only place that the deletion occurs.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in 3e47a38e584b905359fe0ce5be5165d1e8592a90; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in b15b1ce96777b88989a6a4de8d01efbcd81ad2d7; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in 280efb85e9759881a9d31d0874baa04583cb6c09; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in 93fc15be44a35b8e3c58d0238ac0d9b7c53465ff; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in c63abf25203b50243fe228090526f9dbf37727bd; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in 3be718f659683ad89fad6f1eb66bee99727cae64; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in ac5f54691be06a32246179d41be2d73598036deb; From 2baec2c3f854d1f79c7bb28386484e144e864a14 · fixed in 146d4ab94cf129ee06cd467cb5c71368a6b5bad6
- Linux Linux
4.13
- KernelLinux
From 4.13.0 · fixed in 5.10.258; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.135; From 6.7.0 · fixed in 6.12.82; From 6.13.0 · fixed in 6.18.23; From 6.19.0 · fixed in 6.19.13
References 8
git.kernel.org
- stable/c/3e47a38e584b905359fe0ce5be5165d1e8592a90
- stable/c/b15b1ce96777b88989a6a4de8d01efbcd81ad2d7
- stable/c/280efb85e9759881a9d31d0874baa04583cb6c09
- stable/c/93fc15be44a35b8e3c58d0238ac0d9b7c53465ff
- stable/c/c63abf25203b50243fe228090526f9dbf37727bd
- stable/c/3be718f659683ad89fad6f1eb66bee99727cae64
- stable/c/ac5f54691be06a32246179d41be2d73598036deb
- stable/c/146d4ab94cf129ee06cd467cb5c71368a6b5bad6