In the Linux kernel, the following vulnerability has been resolved:
net: consume xmit errors of GSO frames
udpgro_frglist.sh and udpgro_bench.sh are the flakiest tests currently in NIPA. They fail in the same exact way, TCP GRO test stalls occasionally and the test gets killed after 10min.
These tests use veth to simulate GRO. They attach a trivial ("return XDP_PASS;") XDP program to the veth to force TSO off and NAPI on.
Digging into the failure mode we can see that the connection is completely stuck after a burst of drops. The sender's snd_nxt is at sequence number N [1], but the receiver claims to have received (rcv_nxt) up to N + 3 * MSS [2]. Last piece of the puzzle is that senders rtx queue is not empty (let's say the block in the rtx queue is at sequence number N - 4 * MSS [3]).
In this state, sender sends a retransmission from the rtx queue with a single segment, and sequence numbers N-4*MSS:N-3*MSS [3]. Receiver sees it and responds with an ACK all the way up to N + 3 * MSS [2]. But sender will reject this ack as TCP_ACK_UNSENT_DATA because it has no recollection of ever sending data that far out [1]. And we are stuck.
The root cause is the mess of the xmit return codes. veth returns an error when it can't xmit a frame. We end up with a loss event like this:
------------------------------------------------- | GSO super frame 1 | GSO super frame 2 | |-----------------------------------------------| | seg | seg | seg | seg | seg | seg | seg | seg | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ------------------------------------------------- x ok ok <ok>| ok ok ok <x> \\ snd_nxt
"x" means packet lost by veth, and "ok" means it went thru. Since veth has TSO disabled in this test it sees individual segments. Segment 1 is on the retransmit queue and will be resent.
So why did the sender not advance snd_nxt even tho it clearly did send up to seg 8? tcp_write_xmit() interprets the return code from the core to mean that data has not been sent at all. Since TCP deals with GSO super frames, not individual segment the crux of the problem is that loss of a single segment can be interpreted as loss of all. TCP only sees the last return code for the last segment of the GSO frame (in <> brackets in the diagram above).
Of course for the problem to occur we need a setup or a device without a Qdisc. Otherwise Qdisc layer disconnects the protocol layer from the device errors completely.
We have multiple ways to fix this.
1) make veth not return an error when it lost a packet. While this is what I think we did in the past, the issue keeps reappearing and it's annoying to debug. The game of whack a mole is not great.
2) fix the damn return codes We only talk about NETDEV_TX_OK and NETDEV_TX_BUSY in the documentation, so maybe we should make the return code from ndo_start_xmit() a boolean. I like that the most, but perhaps some ancient, not-really-networking protocol would suffer.
3) make TCP ignore the errors It is not entirely clear to me what benefit TCP gets from interpreting the result of ip_queue_xmit()? Specifically once the connection is established and we're pushing data - packet loss is just packet loss?
4) this fix Ignore the rc in the Qdisc-less+GSO case, since it's unreliable. We already always return OK in the TCQ_F_CAN_BYPASS case. In the Qdisc-less case let's be a bit more conservative and only mask the GSO errors. This path is taken by non-IP-"networks" like CAN, MCTP etc, so we could regress some ancient thing. This is the simplest, but also maybe the hackiest fix?
Similar fix has been proposed by Eric in the past but never committed because original reporter was working with an OOT driver and wasn't providing feedback (see Link).
CVSS Details
- CVSS 3.1 Base Score: 7.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade bpftoolUpgrade kernel-tools-develUpgrade kernelUpgrade kernel-toolsUpgrade kernel-livepatch-5.15.202-141.223Upgrade perfUpgrade python-perfUpgrade kernel-tools-debuginfoUpgrade python-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-develUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-livepatch-5.10.252-250.992Upgrade kernel-headersUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debuginfo-common-aarch64 | May 20, 2026 | May 20, 2026 |
| Amazon_linux_2023 | — | Upgrade kernel6.18-modules-extra-commonUpgrade kernel6.18Upgrade kernel6.18-libbpfUpgrade kernel6.18-toolsUpgrade kernel-livepatch-6.18.16-18.222Upgrade kernel6.18-headersUpgrade kernel6.18-modules-extraUpgrade kernel6.18-libbpf-staticUpgrade kernel6.18-tools-develUpgrade kernel6.18-debuginfoUpgrade kernel6.18-libbpf-debuginfoUpgrade bpftool6.18Upgrade perf6.18Upgrade python3-perf6.18-debuginfoUpgrade kernel6.18-debuginfo-common-x86_64Upgrade python3-perf6.18Upgrade kernel6.18-tools-debuginfoUpgrade perf6.18-debuginfoUpgrade kernel6.18-libbpf-develUpgrade kernel6.18-debuginfo-common-aarch64Upgrade bpftool6.18-debuginfoUpgrade kernel6.18-devel | May 19, 2026 | May 6, 2026 |
| Debian | — | Upgrade linux | May 7, 2026 | May 7, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | May 6, 2026 |
| Ubuntu | — | Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-6.8.0-1058-nvidia-lowlatencyUpgrade linux-image-5.15.0-1053-nvidia-tegra-igxUpgrade linux-image-5.15.0-1107-intel-iotgUpgrade linux-image-gcp-6.8Upgrade linux-image-virtual-5.15Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-gke-6.8Upgrade linux-image-lowlatency-6.8Upgrade linux-image-6.8.0-134-generic-64kUpgrade linux-image-raspi-6.8Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-oem-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1064-nvidia-tegraUpgrade linux-image-generic-5.15Upgrade linux-image-intelUpgrade linux-image-azure-lts-22.04Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-gcp-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-5.15.0-1075-xilinx-zynqmpUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-aws-5.15Upgrade linux-image-azure-cvmUpgrade linux-image-azure-fips-5.15Upgrade linux-image-raspi-5.15Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-generic-lpae-5.15Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-oem-20.04Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-6.8.0-1057-oracle-64kUpgrade linux-image-virtual-6.8Upgrade linux-image-realtimeUpgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-aws-fipsUpgrade linux-image-realtime-5.15Upgrade linux-image-azure-5.15Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-genericUpgrade linux-image-oem-22.04dUpgrade linux-image-realtime-6.8.1Upgrade linux-image-5.15.0-1117-azure-fipsUpgrade linux-image-6.8.0-134-genericUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-aws-fips-5.15Upgrade linux-image-6.8.0-1058-gkeUpgrade linux-image-6.8.0-1058-nvidiaUpgrade linux-image-5.15.0-186-fipsUpgrade linux-image-azureUpgrade linux-image-xilinx-6.8Upgrade linux-image-5.15.0-1117-azureUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1029-nvidia-tegraUpgrade linux-image-kvm-5.15Upgrade linux-image-nvidia-tegraUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-ibm-5.15Upgrade linux-image-nvidia-5.15Upgrade linux-image-lowlatency-5.15Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-gkeUpgrade linux-image-fipsUpgrade linux-image-lowlatency-64kUpgrade linux-image-oracleUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-5.15.0-1095-gkeopUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-gkeop-5.15Upgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-6.8.0-1060-ibmUpgrade linux-image-6.8.0-134-lowlatency-64kUpgrade linux-image-6.8.0-1060-aws-fipsUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-1060-aws-64kUpgrade linux-image-gkeopUpgrade linux-image-gke-64k-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1107-nvidiaUpgrade linux-image-5.15.0-1104-kvmUpgrade linux-image-laptop-23.10Upgrade linux-image-azure-fde-5.15Upgrade linux-image-5.15.0-184-lowlatency-64kUpgrade linux-image-6.8.0-1029-nvidia-tegra-rtUpgrade linux-image-raspiUpgrade linux-image-oracle-6.8Upgrade linux-image-6.8.0-2049-raspi-realtimeUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-6.8.0-1060-awsUpgrade linux-image-5.15.0-1106-ibmUpgrade linux-image-6.8.0-1063-gcp-fipsUpgrade linux-image-aws-64kUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-6.8.0-1063-gcpUpgrade linux-image-5.15.0-1112-gcp-fipsUpgrade linux-image-generic-64k-5.15Upgrade linux-image-5.15.0-1107-nvidia-lowlatencyUpgrade linux-image-azure-fde-6.8Upgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-1058-nvidia-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-gcp-5.15Upgrade linux-image-aws-6.8Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-generic-64kUpgrade linux-image-5.15.0-1112-awsUpgrade linux-image-5.15.0-1106-raspiUpgrade linux-image-6.8.0-134-lowlatencyUpgrade linux-image-5.15.0-1112-gcpUpgrade linux-image-gke-64kUpgrade linux-image-6.8.0-1063-gcp-64kUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-5.15.0-1112-aws-64kUpgrade linux-image-5.15.0-1109-oracleUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-fips-5.15Upgrade linux-image-azure-fipsUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-gcpUpgrade linux-image-oem-20.04dUpgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.0-1057-oracleUpgrade linux-image-oracle-64kUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-186-generic-lpaeUpgrade linux-image-generic-lpaeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-nvidia-tegra-igxUpgrade linux-image-aws-lts-22.04Upgrade linux-image-aws-fips-6.8Upgrade linux-image-5.15.0-1112-aws-fipsUpgrade linux-image-xilinxUpgrade linux-image-oem-22.04bUpgrade linux-image-oem-22.04aUpgrade linux-image-oem-20.04cUpgrade linux-image-6.8.1-1055-realtimeUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-5.15.0-186-generic-64kUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-5.15.0-1104-intel-iot-realtimeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oracle-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-5.15.0-1108-gkeUpgrade linux-image-virtualUpgrade linux-image-5.15.0-184-lowlatencyUpgrade linux-image-oem-22.04cUpgrade linux-image-nvidiaUpgrade linux-image-kvmUpgrade linux-image-awsUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-ibm-classicUpgrade linux-image-aws-64k-6.8Upgrade linux-image-aws-64k-5.15Upgrade linux-image-6.8.0-1062-azure-fipsUpgrade linux-image-6.8.0-1058-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1058-gke-64kUpgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-5.15.0-1117-azure-fdeUpgrade linux-image-nvidia-64kUpgrade linux-image-ibm-6.8Upgrade linux-image-5.15.0-1064-nvidia-tegra-rtUpgrade linux-image-azure-fips-6.8Upgrade linux-image-generic-6.8Upgrade linux-image-gke-5.15Upgrade linux-image-gcp-fipsUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-6.8.0-1060-raspiUpgrade linux-image-5.15.0-186-genericUpgrade linux-image-ibmUpgrade linux-image-gkeop-6.8Upgrade linux-image-5.15.0-1053-nvidia-tegra-igx-rtUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-5.15.0-1111-realtimeUpgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-generic-64k-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-134-fipsUpgrade linux-image-6.8.0-1045-gkeop | Jul 2, 2026 | Jul 1, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jun 12, 2026 | May 6, 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