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

net: phylink: record the PHY only once bringup cannot fail

phylink_bringup_phy() stores the PHY in pl->phydev before its last
fallible step: on a MAC whose phylink ops implement LPI,
phy_eee_rx_clock_stop() can fail with a real MDIO error. The callers
unwind with phy_detach(), which knows nothing about pl->phydev, so a
pointer to a PHY that is no longer attached outlives the failed
connect.

What that costs depends on how the caller got here.
phylink_connect_phy() goes through phylink_attach_phy(), which refuses
to attach while pl->phydev is set, turning a transient MDIO error into
a permanent -EBUSY. The SFP path is worse than that: sfp_sm_probe_phy()
answers the failure with phy_device_remove() and phy_device_free(), and
it assigns sfp->mod_phy only past that error return, so nothing clears
pl->phydev and it is left pointing at a freed phy_device that
phylink_resolve() and the ethtool helpers go on reading.
phylink_fwnode_phy_connect() has no such check, so a later connect
overwrites the stale pointer and hides the problem. A disconnect does
not: phylink_disconnect_phy() hands that pointer to phy_disconnect(),
and the second phy_detach() on the same PHY drops references the first
one already released.

Found while making a DSA port survive a PHY whose driver arrives after
the switch probes: keeping the port across a failed connect and
retrying is what makes this window reachable.

Publish the pointer after the last call that can fail instead of
unwinding it afterwards. Nothing between the two points reads
pl->phydev, and the registration that follows cannot fail:
phy_request_interrupt() falls back to polling on its own. The PHY-side
state keeps the order it had, so no MDIO operation moves relative to
another.
Published: 2026-10-18
Score: 4.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Use‑After‑Free via dangling PHY pointer
Action: Apply Patch
AI Analysis

Impact

The Linux kernel’s phylink subsystem stored a PHY device pointer before the final, potentially failing step of the bringup sequence. If the last step fails, the PHY is detached and freed, yet the phylink structure still retains the stale pointer. Subsequent operations that read this pointer can access freed memory, causing memory corruption or a kernel crash. The description does not explicitly state who can exploit this flaw, but it is inferred that an entity controlling network interface re‑configuration could potentially provoke the failure and trigger a crash.

Affected Systems

The flaw exists in all Linux kernel releases that incorporated the buggy code prior to the referenced commit 4e7a4af364c2048bafb213bf0ef4a89dcbe1bfd4. This includes mainline kernel and any vendor distributions built before that patch was applied. Specific vulnerable firmware versions are not enumerated in the data provided, so any kernel containing the prior code is potentially affected.

Risk and Exploitability

Based on the description, it is inferred that an attacker might trigger the failure path by influencing the NIC state, such as re‑configuring the interface or causing link fluctuations. The CVSS score of 4.1 indicates moderate severity, while the EPSS score of less than 1% shows a very low probability of exploitation. The vulnerability involves kernel memory, implying a moderate impact if exploited. It is not listed in the CISA KEV catalog, indicating no known public exploits at this time. The likely attack vector is inferred to be either local or remote access that can influence the NIC state, though the specific condition for exploitation and potential for denial of service are considered inferred.

Generated by OpenCVE AI on October 20, 2026 at 20:06 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes commit 4e7a4af364c2048bafb213bf0ef4a89dcbe1bfd4.
  • Disable Ethernet energy‑saving features such as EEE or LPI, or reconfigure network interfaces to avoid automatic PHY bring‑up that can trigger failure.
  • Monitor system logs for kernel panic or memory corruption events and apply any vendor‑supplied interim fixes if available.

Generated by OpenCVE AI on October 20, 2026 at 20:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 20 Oct 2026 12:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.1, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sun, 18 Oct 2026 23:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Sun, 18 Oct 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net: phylink: record the PHY only once bringup cannot fail phylink_bringup_phy() stores the PHY in pl->phydev before its last fallible step: on a MAC whose phylink ops implement LPI, phy_eee_rx_clock_stop() can fail with a real MDIO error. The callers unwind with phy_detach(), which knows nothing about pl->phydev, so a pointer to a PHY that is no longer attached outlives the failed connect. What that costs depends on how the caller got here. phylink_connect_phy() goes through phylink_attach_phy(), which refuses to attach while pl->phydev is set, turning a transient MDIO error into a permanent -EBUSY. The SFP path is worse than that: sfp_sm_probe_phy() answers the failure with phy_device_remove() and phy_device_free(), and it assigns sfp->mod_phy only past that error return, so nothing clears pl->phydev and it is left pointing at a freed phy_device that phylink_resolve() and the ethtool helpers go on reading. phylink_fwnode_phy_connect() has no such check, so a later connect overwrites the stale pointer and hides the problem. A disconnect does not: phylink_disconnect_phy() hands that pointer to phy_disconnect(), and the second phy_detach() on the same PHY drops references the first one already released. Found while making a DSA port survive a PHY whose driver arrives after the switch probes: keeping the port across a failed connect and retrying is what makes this window reachable. Publish the pointer after the last call that can fail instead of unwinding it afterwards. Nothing between the two points reads pl->phydev, and the registration that follows cannot fail: phy_request_interrupt() falls back to polling on its own. The PHY-side state keeps the order it had, so no MDIO operation moves relative to another.
Title net: phylink: record the PHY only once bringup cannot fail
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-19T09:21:47.748Z

Reserved: 2026-09-25T10:25:14.357Z

Link: CVE-2026-98563

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:08.443

Modified: 2026-10-19T10:19:12.930

Link: CVE-2026-98563

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-18T00:00:00Z

Links: CVE-2026-98563 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-20T20:15:07Z

Weaknesses