CVE-2025-38311 | iavf: get rid of the crit lock

In the Linux kernel, the following vulnerability has been resolved: iavf: get rid of the crit lock Get rid of the crit lock. That frees us from the error prone logic of try_locks. Thanks to netdev_lock() by Jakub it is now easy, and in most cases we were protected by it already - replace crit lock by netdev lock when it was not the case. Lockdep reports that we should cancel the work under crit_lock [splat1], and that was the scheme we have mostly followed since [1] by Slawomir. But when that is done we still got into deadlocks [splat2]. So instead we should look at the bigger problem, namely "weird locking/scheduling" of the iavf. The first step to fix that is to remove the crit lock. I will followup with a -next series that simplifies scheduling/tasks. Cancel the work without netdev lock (weird unlock+lock scheme), to fix the [splat2] (which would be totally ugly if we would kept the crit lock). Extend protected part of iavf_watchdog_task() to include scheduling more work. Note that the removed comment in iavf_reset_task() was misplaced, it belonged to inside of the removed if condition, so it's gone now. [splat1] - w/o this patch - The deadlock during VF removal: WARNING: possible circular locking dependency detected sh/3825 is trying to acquire lock: ((work_completion)(&(&adapter->watchdog_task)->work)){+.+.}-{0:0}, at: start_flush_work+0x1a1/0x470 but task is already holding lock: (&adapter->crit_lock){+.+.}-{4:4}, at: iavf_remove+0xd1/0x690 [iavf] which lock already depends on the new lock. [splat2] - when cancelling work under crit lock, w/o this series, see [2] for the band aid attempt WARNING: possible circular locking dependency detected sh/3550 is trying to acquire lock: ((wq_completion)iavf){+.+.}-{0:0}, at: touch_wq_lockdep_map+0x26/0x90 but task is already holding lock: (&dev->lock){+.+.}-{4:4}, at: iavf_remove+0xa6/0x6e0 [iavf] which lock already depends on the new lock. [1] fc2e6b3b132a ("iavf: Rework mutexes for better synchronisation") [2] https://github.com/pkitszel/linux/commit/52dddbfc2bb60294083f5711a158a

Published: 2025-07-10 Last update: 2026-06-17 Assigner: 416baaa9-dc9f-4396-8d5f-8c081fb06d67 Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Conclusion & alert: CVE-2025-38311 is rated Low Risk (29.3/100): CVSS Medium severity, with low exploitation likelihood (EPSS 0.07%). 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-38311

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 2026-05-06 0.02% 0.07% +0.05%
2 2025-07-10 0.02%

Full EPSS history (2 records total)

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

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-38311

OS Trackers for CVE-2025-38311

vendor priority summary link
debian unimportant CVE-2025-38311 unimportant priority: Debian including 1 source packages (linux), 5 status rows across 5 suites (bookworm, bullseye, forky, sid, trixie): resolved 3, open 2. https://security-tracker.debian.org/tracker/CVE-2025-38311
redhat medium https://access.redhat.com/security/cve/CVE-2025-38311
suse medium CVE-2025-38311 severity moderate: SUSE including 94 source package names (cluster-md-kmp-64kb-6.12.0-160000.6.1, cluster-md-kmp-default, …), 514 product×package rows across 91 product lines (Image SLES-Azure-3P, Image SLES-Azure-Basic, … (91 product lines)): Known Not Affected 316, Fixed 177, First Fixed 21. https://www.suse.com/security/cve/CVE-2025-38311/
ubuntu medium CVE-2025-38311 medium priority: Ubuntu including 158 source packages (linux, linux-allwinner-5.19, …), 1548 status rows across 10 suites (bionic, focal, jammy, noble, oracular, plucky, questing, trusty, upstream, xenial): DNE 1142, ignored 164, released 107, not-affected 100, needed 33, needs-triage 2. https://ubuntu.com/security/CVE-2025-38311

Affected software / configurations for CVE-2025-38311

Vendor Product Version Raw CPE
linux linux_kernel >= 6.1.42, < 6.2 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel >= 6.4.7, < 6.5 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel >= 6.5.1, < 6.15.3 cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:-:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:rc3:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:rc4:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:rc5:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:rc6:*:*:*:*:*:*
linux linux_kernel 6.5 cpe:2.3:o:linux:linux_kernel:6.5:rc7:*:*:*:*:*:*

References for CVE-2025-38311

cvelogic Threat Intelligence