In the Linux kernel, the following vulnerability has been resolved:
kcm: fix zero-frag skb in frag_list on partial sendmsg error
Syzkaller reported a warning in kcm_write_msgs() when processing a message with a zero-fragment skb in the frag_list.
When kcm_sendmsg() fills MAX_SKB_FRAGS fragments in the current skb, it allocates a new skb (tskb) and links it into the frag_list before copying data. If the copy subsequently fails (e.g. -EFAULT from user memory), tskb remains in the frag_list with zero fragments:
head skb (msg being assembled, NOT yet in sk_write_queue) +-----------+ | frags[17] | (MAX_SKB_FRAGS, all filled with data) | frag_list-+--> tskb +-----------+ +----------+ | frags[0] | (empty! copy failed before filling) +----------+
For SOCK_SEQPACKET with partial data already copied, the error path saves this message via partial_message for later completion. For SOCK_SEQPACKET, sock_write_iter() automatically sets MSG_EOR, so a subsequent zero-length write(fd, NULL, 0) completes the message and queues it to sk_write_queue. kcm_write_msgs() then walks the frag_list and hits:
WARN_ON(!skb_shinfo(skb)->nr_frags)
TCP has a similar pattern where skbs are enqueued before data copy and cleaned up on failure via tcp_remove_empty_skb(). KCM was missing the equivalent cleanup.
Fix this by tracking the predecessor skb (frag_prev) when allocating a new frag_list entry. On error, if the tail skb has zero frags, use frag_prev to unlink and free it in O(1) without walking the singly-linked frag_list. frag_prev is safe to dereference because the entire message chain is only held locally (or in kcm->seq_skb) and is not added to sk_write_queue until MSG_EOR, so the send path cannot free it underneath us.
Also change the WARN_ON to WARN_ON_ONCE to avoid flooding the log if the condition is somehow hit repeatedly.
There are currently no KCM selftests in the kernel tree; a simple reproducer is available at [1].
[1] https://gist.github.com/mrpre/a94d431c757e8d6f168f4dd1a3749daa
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade python3-perf6.18Upgrade bpftool6.18Upgrade kernel6.18-debuginfoUpgrade kernel6.18-tools-debuginfoUpgrade bpftool6.18-debuginfoUpgrade kernel6.18-libbpf-debuginfoUpgrade python3-perf6.18-debuginfoUpgrade kernel6.18-libbpf-develUpgrade perf6.18Upgrade kernel6.18-develUpgrade perf6.18-debuginfoUpgrade kernel6.18-libbpf-staticUpgrade kernel6.18-tools-develUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel-livepatch-6.18.16-18.222Upgrade kernel6.18-modules-extra-commonUpgrade kernel6.18-modules-extraUpgrade kernel6.18-headersUpgrade kernel6.18Upgrade kernel6.18-libbpfUpgrade kernel6.18-tools | May 19, 2026 | May 6, 2026 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Ubuntu | — | Upgrade linux-image-aws-64k-6.8Upgrade linux-image-azure-fde-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-1062-azure-fipsUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-6.8.0-1045-gkeopUpgrade linux-image-6.8.0-1058-nvidia-lowlatency-64kUpgrade linux-image-oem-20.04cUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1060-aws-64kUpgrade linux-image-gcp-64kUpgrade linux-image-azureUpgrade linux-image-6.8.1-1055-realtimeUpgrade linux-image-laptop-23.10Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-gke-6.8Upgrade linux-image-virtual-6.8Upgrade linux-image-6.8.0-2049-raspi-realtimeUpgrade linux-image-6.8.0-1060-awsUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-fips-6.8Upgrade linux-image-gke-64kUpgrade linux-image-raspi-6.8Upgrade linux-image-oem-20.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.0-1058-gkeUpgrade linux-image-aws-6.8Upgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1029-nvidia-tegra-rtUpgrade linux-image-nvidia-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-raspiUpgrade linux-image-generic-64k-6.8Upgrade linux-image-azure-fipsUpgrade linux-image-oem-22.04dUpgrade linux-image-awsUpgrade linux-image-ibm-6.8Upgrade linux-image-kvmUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-aws-fips-6.8Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-gcpUpgrade linux-image-xilinxUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-6.8.0-1057-oracle-64kUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-6.8.0-134-genericUpgrade linux-image-oracle-6.8Upgrade linux-image-realtimeUpgrade linux-image-aws-64kUpgrade linux-image-xilinx-6.8Upgrade linux-image-oracle-64kUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-gcp-fipsUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1063-azureUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1060-ibmUpgrade linux-image-gke-64k-6.8Upgrade linux-image-6.8.0-134-lowlatencyUpgrade linux-image-oem-20.04dUpgrade linux-image-nvidia-6.8Upgrade linux-image-generic-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-1029-nvidia-tegraUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-oem-20.04bUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.8.0-134-fipsUpgrade linux-image-6.8.0-1058-gke-64kUpgrade linux-image-genericUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1060-raspiUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-gcp-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-gkeopUpgrade linux-image-6.8.0-1063-gcp-fipsUpgrade linux-image-6.8.0-1063-gcpUpgrade linux-image-6.8.0-1057-oracleUpgrade linux-image-oracleUpgrade linux-image-6.8.0-134-generic-64kUpgrade linux-image-6.8.0-1058-nvidia-lowlatencyUpgrade linux-image-6.8.0-134-lowlatency-64kUpgrade linux-image-6.8.0-1058-nvidia-64kUpgrade linux-image-6.8.0-1058-nvidiaUpgrade linux-image-ibmUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1063-gcp-64kUpgrade linux-image-6.8.0-1060-aws-fipsUpgrade linux-image-oem-22.04aUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-generic-64kUpgrade linux-image-aws-fipsUpgrade linux-image-virtualUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-lowlatency-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-oem-22.04Upgrade linux-image-gkeUpgrade linux-image-fipsUpgrade linux-image-nvidia-tegra | Jul 2, 2026 | Jul 1, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub