CVE-2025-39905CWE-362

CVE-2025-39905

High · published October 1, 2025

CVSS v3.1
7.0
EPSS
0%
Percentile
1.3
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

net: phylink: add lock for serializing concurrent pl->phydev writes with resolver

Currently phylink_resolve() protects itself against concurrent

phylink_bringup_phy() or phylink_disconnect_phy() calls which modify

pl->phydev by relying on pl->state_mutex.

The problem is that in phylink_resolve(), pl->state_mutex is in a lock

inversion state with pl->phydev->lock. So pl->phydev->lock needs to be

acquired prior to pl->state_mutex. But that requires dereferencing

pl->phydev in the first place, and without pl->state_mutex, that is

racy.

Hence the reason for the extra lock. Currently it is redundant, but it

will serve a functional purpose once mutex_lock(&phy->lock) will be

moved outside of the mutex_lock(&pl->state_mutex) section.

Another alternative considered would have been to let phylink_resolve()

acquire the rtnl_mutex, which is also held when phylink_bringup_phy()

and phylink_disconnect_phy() are called. But since phylink_disconnect_phy()

runs under rtnl_lock(), it would deadlock with phylink_resolve() when

calling flush_work(&pl->resolve). Additionally, it would have been

undesirable because it would have unnecessarily blocked many other call

paths as well in the entire kernel, so the smaller-scoped lock was

preferred.

The record
Technical detail
CVSS v3.1
7.0 · HIGH
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00111 · 1.3th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2025-10-01T12:15Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel< 6.16.86.16.8
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (2)
EPSS history
Timeline
  • 01 OCT 07:44Z
    net: phylink: add lock for serializing concurrent pl->phydev writes with resolver
    cvelistv5