U.S. flag   An official website of the United States government
Dot gov

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Https

Secure .gov websites use HTTPS
A lock (Dot gov) or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.

CVE-2025-21681 Detail

Description

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.


Metrics

NVD enrichment efforts reference publicly available information to associate vector strings. CVSS information contributed by other sources is also displayed.
CVSS 3.x Severity and Vector Strings:

NIST CVSS score
NIST: NVD
Base Score:  5.5 MEDIUM
Vector:  CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

References to Advisories, Solutions, and Tools

By selecting these links, you will be leaving NIST webspace. We have provided these links to other web sites because they may have information that would be of interest to you. No inferences should be drawn on account of other sites being referenced, or not, from this page. There may be other web sites that are more appropriate for your purpose. NIST does not necessarily endorse the views expressed, or concur with the facts presented on these sites. Further, NIST does not endorse any commercial products that may be mentioned on these sites. Please address comments about this page to nvd@nist.gov.

Hyperlink Resource
https://git.kernel.org/stable/c/47e55e4b410f7d552e43011baa5be1aab4093990 Patch 
https://git.kernel.org/stable/c/82f433e8dd0629e16681edf6039d094b5518d8ed Patch 
https://git.kernel.org/stable/c/ea966b6698785fb9cd0fdb867acd91b222e4723f Patch 
https://git.kernel.org/stable/c/ea9e990356b7bee95440ba0e6e83cc4d701afaca Patch 

Weakness Enumeration

CWE-ID CWE Name Source
CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop') cwe source acceptance level NIST  

Known Affected Software Configurations Switch to CPE 2.2

Configuration 1 ( hide )
 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
   Show Matching CPE(s)
From (including)
6.1.25
Up to (excluding)
6.1.127
 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
   Show Matching CPE(s)
From (including)
6.2.12
Up to (excluding)
6.6.74
 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
   Show Matching CPE(s)
From (including)
6.7
Up to (excluding)
6.12.11
 cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*
   Show Matching CPE(s)
 cpe:2.3:o:linux:linux_kernel:6.13:rc7:*:*:*:*:*:*
   Show Matching CPE(s)

Denotes Vulnerable Software
Are we missing a CPE here? Please let us know.

Change History

2 change records found show changes

Quick Info

CVE Dictionary Entry:
CVE-2025-21681
NVD Published Date:
01/31/2025
NVD Last Modified:
02/21/2025
Source:
kernel.org