nvme-tcp: fix usage of page_frag_cache
3Vexday Risk Score
No sign of exploitation. No public exploitation artifact known so far.
ssvc Trackepss 0.2%
exploitation probability
0.2%top 95% of all CVEs
observed exploitation
nono source reports it
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.
Affected products
Linux · LinuxReferences
https://git.kernel.org/stable/c/0a9750263ffacbbd2048a391fd4bd22e2146c57dhttps://git.kernel.org/stable/c/36ac05f7cfd59d90c597071304b14e98090d5dd1https://git.kernel.org/stable/c/64561afb42d8390695bf810d9bbd087cbca00291https://git.kernel.org/stable/c/6e4cf281558709b92ec2ca3054fe2ffc69266ef9https://git.kernel.org/stable/c/d19f98c79f1b7e09e4cdf5c20d626e571e487467