Cloudanix VulnDB

CVE-2025-39805

None

CVSS

—

EPSS

0.2%

Published

Sep 16, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A cleanup mistake in a network driver can trigger confusing system warnings whenever certain hardware is removed or its software is unloaded.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Theoretical
Impact
Other
Component
OS kernel
Class
Race Condition
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Incorrect sequencing in macb_remove() calls phy_exit() while the netdev remains registered, causing kernfs to warn on attempted removal of 'attached_dev' sysfs link during phy_detach.

Why it matters to the business

Device removal or driver unload on affected Linux systems produces kernel warnings and may contribute to minor instability or logging noise in network hardware environments; high downstream kernel prevalence amplifies patch urgency despite low exploit likelihood.

How an attack unfolds

An attacker or administrator triggers macb device removal (module unload, hot-unplug, or platform remove); the flawed ordering in macb_remove() executes phy_disconnect while the netdev is still registered, surfacing the kernfs warning. No known threat actors or ransomware usage.

How to fix it

Update the Linux kernel to a version containing commit 7351782f2fc8ac31ced52e3d4e6fa120f819a7ab (or later stable backports) which reorders unregister_netdev ahead of phy_exit and MDIO cleanup. Reboot after upgrade and verify driver load.

How to confirm the fix worked

Confirm kernel version includes the referenced commit; reproduce device removal and ensure no 'kernfs: can not remove' warnings appear in dmesg; inspect macb_remove call order in source if building custom kernels.

Typical attack path

  1. Load or bind macb driver to network device
  2. Initiate device removal or module unload
  3. macb_remove executes phy_exit before unregister_netdev
  4. kernfs warning emitted during sysfs link cleanup

How to detect it

Search kernel logs (dmesg, journalctl, /var/log/kern.log) for the exact warning text emitted from fs/kernfs/dir.c during macb_remove or platform_remove paths; correlate with phylink or macb module activity.

  • kernfs: can not remove 'attached_dev', no directory
  • WARNING: CPU.*at fs/kernfs/dir.c:1683
  • macb_remove.*platform_remove
  • phy_detach.*phy_disconnect.*phylink_disconnect_phy

What your security team should do

  • Prioritize kernel package updates containing the fix across all affected distributions
  • Monitor kernel logs for the specific kernfs warning string during maintenance windows
  • Schedule testing of network device hot-plug and driver unload paths post-update

The record

In the Linux kernel, the following vulnerability has been resolved: net: macb: fix unregister_netdev call order in macb_remove() When removing a macb device, the driver calls phy_exit() before unregister_netdev(). This leads to a WARN from kernfs: ------------[ cut here ]------------ kernfs: can not remove 'attached_dev', no directory WARNING: CPU: 1 PID: 27146 at fs/kernfs/dir.c:1683 Call trace: kernfs_remove_by_name_ns+0xd8/0xf0 sysfs_remove_link+0x24/0x58 phy_detach+0x5c/0x168 phy_disconnect+0x4c/0x70 phylink_disconnect_phy+0x6c/0xc0 [phylink] macb_close+0x6c/0x170 [macb] ... macb_remove+0x60/0x168 [macb] platform_remove+0x5c/0x80 ... The warning happens because the PHY is being exited while the netdev is still registered. The correct order is to unregister the netdev before shutting down the PHY and cleaning up the MDIO bus. Fix this by moving unregister_netdev() ahead of phy_exit() in macb_remove().

Affected packages

Ecosystem Package Introduced Fixed
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Debian:14 linux 0 6.16.5-1
Linux Kernel 5.18.0 6.1.159
Linux Kernel 5.18.0 6.12.45
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_18 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_18 0 1-150600.13.3.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.81.3.150600.12.36.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.81.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.81.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.81.2
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.81.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.81.3.150600.12.36.3
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.81.2
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.81.3
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.8.1.160000.2.5
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.8.1

Related vulnerabilities