CVE-2025-21681 | openvswitch: fix lockup on tx to unregistering netdev with carrier

In the Linux kernel, the following vulnerability has been resolved: openvswitch: fix lockup on tx to unregistering netdev with carrier Commit in a fixes tag attempted to fix the issue in the following sequence of calls: do_output -> ovs_vport_send -> dev_queue_xmit -> __dev_queue_xmit -> netdev_core_pick_tx -> skb_tx_hash When device is unregistering, the 'dev->real_num_tx_queues' goes to zero and the 'while (unlikely(hash >= qcount))' loop inside the 'skb_tx_hash' becomes infinite, locking up the core forever. But unfortunately, checking just the carrier status is not enough to fix the issue, because some devices may still be in unregistering state while reporting carrier status OK. One example of such device is a net/dummy. It sets carrier ON on start, but it doesn't implement .ndo_stop to set the carrier off. And it makes sense, because dummy doesn't really have a carrier. Therefore, while this device is unregistering, it's still easy to hit the infinite loop in the skb_tx_hash() from the OVS datapath. There might be other drivers that do the same, but dummy by itself is important for the OVS ecosystem, because it is frequently used as a packet sink for tcpdump while debugging OVS deployments. And when the issue is hit, the only way to recover is to reboot. Fix that by also checking if the device is running. The running state is handled by the net core during unregistering, so it covers unregistering case better, and we don't really need to send packets to devices that are not running anyway. While only checking the running state might be enough, the carrier check is preserved. The running and the carrier states seem disjoined throughout the code and different drivers. And other core functions like __dev_direct_xmit() check both before attempting to transmit a packet. So, it seems safer to check both flags in OVS as well.

Published: 2025-01-31 Last update: 2025-11-03 Assigner: 416baaa9-dc9f-4396-8d5f-8c081fb06d67 Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Conclusion & alert: CVE-2025-21681 is rated Low Risk (26.4/100): CVSS Medium severity, with low exploitation likelihood (EPSS 0.04%). Mandatory action: Monitor for updates and reassess as exploit intelligence or EPSS changes.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2025-21681

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2025-11-21 0.07% 0.04% -0.03%
2 2025-11-18 0.04% 0.07% +0.02%
3 2025-02-01 0.04%

Full EPSS history (3 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2025-21681

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
5.5 3.1 MEDIUM
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H Click to expand
Attack vector (AV:L)
They already need access on the box, or another person has to do something wrong; it’s not a remote drive-by.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:L)
A normal user session is enough; they don’t have to be admin.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:H)
Could take the service down hard or make it unusable for people who depend on it.
1.8 3.6 [email protected]

Weakness enumeration for CVE-2025-21681

OS Trackers for CVE-2025-21681

vendor priority summary link
debian unimportant CVE-2025-21681 unimportant priority: Debian including 2 source packages (linux, linux-6.1), 6 status rows across 5 suites (bookworm, bullseye, forky, sid, trixie): resolved 6. https://security-tracker.debian.org/tracker/CVE-2025-21681
redhat medium https://access.redhat.com/security/cve/CVE-2025-21681
suse medium CVE-2025-21681 severity moderate: SUSE including 435 source package names (2.1.3-6.11:kernel-default-6.4.0-28.1, 2.1.3-6.12:kernel-default-base-6.4.0-28.1.21.6, …), 820 product×package rows across 144 product lines (Container suse/sl-micro/6.0/base-os-container, Container suse/sl-micro/6.0/kvm-os-container, … (144 product lines)): Fixed 392, Known Affected 231, Known Not Affected 197. https://www.suse.com/security/cve/CVE-2025-21681/
ubuntu medium CVE-2025-21681 medium priority: Ubuntu including 158 source packages (linux, linux-allwinner-5.19, …), 1551 status rows across 10 suites (bionic, focal, jammy, noble, oracular, plucky, questing, trusty, upstream, xenial): DNE 1145, ignored 148, released 136, not-affected 121, needed 1. https://ubuntu.com/security/CVE-2025-21681

Affected software / configurations for CVE-2025-21681

Vendor Product Version Raw CPE
linux linux_kernel >= 6.1.25, < 6.1.127 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel >= 6.2.12, < 6.6.74 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel >= 6.7, < 6.12.11 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*
linux linux_kernel 6.13 cpe:2.3:o:linux:linux_kernel:6.13:rc7:*:*:*:*:*:*

References for CVE-2025-21681

cvelogic Threat Intelligence