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
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel6.18-libbpfUpgrade kernel-livepatch-6.18.16-18.222Upgrade kernel6.18-headersUpgrade kernel6.18-modules-extra-commonUpgrade kernel6.18-modules-extraUpgrade kernel6.18Upgrade kernel6.18-toolsUpgrade perf6.18Upgrade perf6.18-debuginfoUpgrade kernel6.18-libbpf-develUpgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel6.18-develUpgrade bpftool6.18Upgrade bpftool6.18-debuginfoUpgrade python3-perf6.18Upgrade kernel6.18-tools-debuginfoUpgrade kernel6.18-debuginfoUpgrade kernel6.18-tools-develUpgrade python3-perf6.18-debuginfoUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-libbpf-staticUpgrade kernel6.18-libbpf-debuginfo | May 19, 2026 | May 6, 2026 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Ubuntu | — | Upgrade linux-image-nvidia-tegraUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-fipsUpgrade linux-image-gkeUpgrade linux-image-virtualUpgrade linux-image-6.8.0-134-fipsUpgrade linux-image-oem-20.04bUpgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-ibm-classicUpgrade linux-image-generic-64kUpgrade linux-image-intel-iotgUpgrade linux-image-lowlatency-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-134-lowlatency-64kUpgrade linux-image-ibmUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-1058-nvidia-lowlatencyUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1057-oracleUpgrade linux-image-6.8.0-1063-gcp-fipsUpgrade linux-image-6.8.0-1063-gcpUpgrade linux-image-oracleUpgrade linux-image-gkeopUpgrade linux-image-gcp-6.8Upgrade linux-image-6.8.0-1063-gcp-64kUpgrade linux-image-azure-lts-24.04Upgrade linux-image-aws-fipsUpgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.8.0-1029-nvidia-tegraUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-6.8.0-1060-raspiUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-genericUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-1058-nvidia-64kUpgrade linux-image-6.8.0-134-generic-64kUpgrade linux-image-6.8.0-1058-nvidiaUpgrade linux-image-6.8.0-1058-gke-64kUpgrade linux-image-lowlatency-64kUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-6.8.0-1060-aws-fipsUpgrade linux-image-gcp-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gke-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-azure-fipsUpgrade linux-image-azure-fde-6.8Upgrade linux-image-laptop-23.10Upgrade linux-image-6.8.1-1055-realtimeUpgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-oem-20.04dUpgrade linux-image-generic-6.8Upgrade linux-image-nvidia-6.8Upgrade linux-image-raspi-6.8Upgrade linux-image-raspiUpgrade linux-image-virtual-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1029-nvidia-tegra-rtUpgrade linux-image-6.8.0-2049-raspi-realtimeUpgrade linux-image-nvidia-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-fips-6.8Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-6.8.0-1060-awsUpgrade linux-image-6.8.0-1058-gkeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-aws-fips-6.8Upgrade linux-image-aws-64kUpgrade linux-image-6.8.0-134-genericUpgrade linux-image-6.8.0-1060-aws-64kUpgrade linux-image-6.8.0-1057-oracle-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-kvmUpgrade linux-image-ibm-6.8Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-gcpUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-azure-fips-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-1062-azure-fipsUpgrade linux-image-6.8.0-1058-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1045-gkeopUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-azure-fdeUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-realtimeUpgrade linux-image-oracle-6.8Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1063-azureUpgrade linux-image-oracle-64kUpgrade linux-image-gke-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-xilinxUpgrade linux-image-oem-22.04dUpgrade linux-image-oem-20.04cUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azureUpgrade linux-image-awsUpgrade linux-image-6.8.0-1060-ibmUpgrade linux-image-xilinx-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-oem-22.04bUpgrade linux-image-gke-64k-6.8Upgrade linux-image-aws-64k-6.8Upgrade linux-image-generic-64k-6.8Upgrade linux-image-6.8.0-134-lowlatencyUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-oem-20.04Upgrade linux-image-lowlatency-64k-hwe-22.04 | Jul 2, 2026 | Jul 1, 2026 |
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