nvme-tcp: fix usage of page_frag_cache
- 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.7, 6.12.108, 6.18.49, 7.1.13, 7.2.3
- 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: nvme-tcp: fix usage of page_frag_cache nvme uses page_frag_cache to preallocate PDU for each preallocated request of block device. Block devices are created in parallel threads, consequently page_frag_cache is used in not thread-safe manner. That leads to incorrect refcounting of backstore pages and premature free. That can be catched by !sendpage_ok inside network stack: WARNING: CPU: 7 PID: 467 at ../net/core/skbuff.c:6931 skb_splice_from_iter+0xfa/0x310. tcp_sendmsg_locked+0x782/0xce0 tcp_sendmsg+0x27/0x40 sock_sendmsg+0x8b/0xa0 nvme_tcp_try_send_cmd_pdu+0x149/0x2a0 Then random panic may occur. Fix that by serializing the usage of page_frag_cache.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 4e893ca8117022de68ce1b61c0309e3d17bb8a25 · fixed in d19f98c79f1b7e09e4cdf5c20d626e571e487467; From 4e893ca8117022de68ce1b61c0309e3d17bb8a25 · fixed in 64561afb42d8390695bf810d9bbd087cbca00291; From 4e893ca8117022de68ce1b61c0309e3d17bb8a25 · fixed in 0a9750263ffacbbd2048a391fd4bd22e2146c57d; From 4e893ca8117022de68ce1b61c0309e3d17bb8a25 · fixed in 6e4cf281558709b92ec2ca3054fe2ffc69266ef9; From 4e893ca8117022de68ce1b61c0309e3d17bb8a25 · fixed in 36ac05f7cfd59d90c597071304b14e98090d5dd1; From 6.6.160 · fixed in 6.7
- Linux Linux
6.12
- KernelLinux
From 6.12.0 · fixed in 6.12.108; From 6.13.0 · fixed in 6.18.49; From 6.19.0 · fixed in 7.1.13; From 7.2.0 · fixed in 7.2.3