CVE-2022-49501

usbnet: Run unregister_netdev() before unbind() again

State
Published
Severity
7.8 High
Published
Feb 26, 2025
Updated
May 11, 2026
Reserved
Feb 26, 2025

Read the record on cve.org

Description

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

usbnet: Run unregister_netdev() before unbind() again

Commit 2c9d6c2b871d ("usbnet: run unbind() before unregister_netdev()") sought to fix a use-after-free on disconnect of USB Ethernet adapters.

It turns out that a different fix is necessary to address the issue: https://lore.kernel.org/netdev/18b3541e5372bc9b9fc733d422f4e698c089077c.1650177997.git.lukas@wunner.de/

So the commit was not necessary.

The commit made binding and unbinding of USB Ethernet asymmetrical: Before, usbnet_probe() first invoked the ->bind() callback and then register_netdev(). usbnet_disconnect() mirrored that by first invoking unregister_netdev() and then ->unbind().

Since the commit, the order in usbnet_disconnect() is reversed and no longer mirrors usbnet_probe().

One consequence is that a PHY disconnected (and stopped) in ->unbind() is afterwards stopped once more by unregister_netdev() as it closes the netdev before unregistering. That necessitates a contortion in ->stop() because the PHY may only be stopped if it hasn't already been disconnected.

Reverting the commit allows making the call to phy_stop() unconditional in ->stop().

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HCISA-ADP

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 2c9d6c2b871d5841ce26ede3e81fd37e2e33c42c to before 6d5deb242874d924beccf7eb3cef04c1c3b0da79Affected
  • 2c9d6c2b871d5841ce26ede3e81fd37e2e33c42c to before fbda837107f9bd4ec658d2aa88c6856dba606f06Affected
  • 2c9d6c2b871d5841ce26ede3e81fd37e2e33c42c to before 969a1b3ea3cb7d58a16fe12fd1b04bfc0ea40509Affected
  • 2c9d6c2b871d5841ce26ede3e81fd37e2e33c42c to before d1408f6b4dd78fb1b9e26bcf64477984e5f85409Affected
LinuxLinux
  • 5.14Affected
  • before 5.14Not affected
  • 5.15.46 through 5.15.*Not affected
  • 5.17.14 through 5.17.*Not affected
  • 5.18.3 through 5.18.*Not affected
  • 5.19 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.