Bug 2388923 (CVE-2025-38551)

Summary: CVE-2025-38551 kernel: virtio-net: fix recursived rtnl_lock() during probe()
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedKeywords: Security
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in the Linux kernel’s virtio-net driver, where a recursive rtnl_lock() could be triggered during device probing. The deadlock occurs when a VIRTIO_NET_S_ANNOUNCE request is received from the VMM while the driver is still in the probe stage. In this scenario, the config_work scheduled by virtio_config_changed_work() may invoke netdev_notify_peers(), which attempts to acquire rtnl_lock() while it is already held by virtnet_probe(). This issue results in a recursive lock acquisition and a potential system hang.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2025-08-16 12:01:37 UTC
In the Linux kernel, the following vulnerability has been resolved:

virtio-net: fix recursived rtnl_lock() during probe()

The deadlock appears in a stack trace like:

  virtnet_probe()
    rtnl_lock()
    virtio_config_changed_work()
      netdev_notify_peers()
        rtnl_lock()

It happens if the VMM sends a VIRTIO_NET_S_ANNOUNCE request while the
virtio-net driver is still probing.

The config_work in probe() will get scheduled until virtnet_open() enables
the config change notification via virtio_config_driver_enable().