CVE-2022-50220: usbnet: Fix linkwatch use-after-free on disconnect
Vulnerability summary
CVE-2022-50220 is a high (CVSS 7.8) Use After Free vulnerability in linux. EPSS estimates a 0.25% chance of exploitation in the next 30 days, higher than 15.9% of scored vulnerabilities.
Not severe (CVSS 7.8, local access); no exploitation reported by the 5 checked sources
Source freshness unavailable
How is this decided?Advisory lineage
Upstream 0 · Downstream 7 · Related 7Timeline
- 18-06-2025PublishedVulnerability first disclosed.
- 11-05-2026Last modifiedVulnerability information updated.
Description
In the Linux kernel, the following vulnerability has been resolved: usbnet: Fix linkwatch use-after-free on disconnect usbnet uses the work usbnet_deferred_kevent() to perform tasks which may sleep. On disconnect, completion of the work was originally awaited in ->ndo_stop(). But in 2003, that was moved to ->disconnect() by historic commit "[PATCH] USB: usbnet, prevent exotic rtnl deadlock": https://git.kernel.org/tglx/history/c/0f138bbfd83c The change was made because back then, the kernel's workqueue implementation did not allow waiting for a single work. One had to wait for completion of *all* work by calling flush_scheduled_work(), and that could deadlock when waiting for usbnet_deferred_kevent() with rtnl_mutex held in ->ndo_stop(). The commit solved one problem but created another: It causes a use-after-free in USB Ethernet drivers aqc111.c, asix_devices.c, ax88179_178a.c, ch9200.c and smsc75xx.c: * If the drivers receive a link change interrupt immediately before disconnect, they raise EVENT_LINK_RESET in their (non-sleepable) ->status() callback and schedule usbnet_deferred_kevent(). * usbnet_deferred_kevent() invokes the driver's ->link_reset() callback, which calls netif_carrier_{on,off}(). * That in turn schedules the work linkwatch_event(). Because usbnet_deferred_kevent() is awaited after unregister_netdev(), netif_carrier_{on,off}() may operate on an unregistered netdev and linkwatch_event() may run after free_netdev(), causing a use-after-free. In 2010, usbnet was changed to only wait for a single instance of usbnet_deferred_kevent() instead of *all* work by commit 23f333a2bfaf ("drivers/net: don't use flush_scheduled_work()"). Unfortunately the commit neglected to move the wait back to ->ndo_stop(). Rectify that omission at long last.
CVSS metrics
4 scores · 3 sources · 2 versions- OSV · UbuntuEcosystem advisory · calculated7.8HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- OSV · DebianEcosystem advisory · calculated7.8HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
EPSS trend
Probability
0.25%
Chance of exploitation in the next 30 days
Percentile
16%
Versus all other CVEs
30-day change
Increase +0.01 pp
From 0.24% on 04-10-2026
Known exploited
Compare KEV catalogsNot in the CISA KEV catalog.
Not in the ENISA CNW catalog.
Not in the CIRCL catalog.
Public exploits
0 foundNo public exploits indexed.
Weaknesses
CWE · root causeAffected systems
Known conditions: local access, low-privilege account, no user interaction (CVSS vector). Other conditions: not stated in public data.
Ubuntu111 products
- linuxAll versions (No fix recorded) | < 4.15.0-197.208 | < 5.4.0-132.148 | < 5.15.0-53.59
- linux-allwinner-5.19All versions (No fix recorded)
- linux-awsAll versions (No fix recorded) | < 4.15.0-1143.155 | < 5.4.0-1089.97 | < 5.15.0-1023.27
- linux-aws-5.0All versions (No fix recorded)
- linux-aws-5.11All versions (No fix recorded)
Linux2 products
- linux≥ 23f333a2bfafba80339315b724808982a9de57d9, < d2d6b530d89b0a912148018027386aa049f0a309 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < e2a521a7dcc463c5017b4426ca0804e151faeff7 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 7f77dcbc030c2faa6d8e8a594985eeb34018409e | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 8b4588b8b00b299be16a35be67b331d8fdba03f3 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 135199a2edd459d2b123144efcd7f9bcd95128e4 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 635fd8953e4309b54ca6a81bed1d4a87668694f4 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < d49bb8cf9bfaa06aa527eb30f1a52a071da2e32f | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < db3b738ae5f726204876f4303c49cfdf4311403f | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < a69e617e533edddf3fa3123149900f36e0a6dc74 | 2.6.38
- linux_kernel≥ 2.6.38, < 4.9.326 | ≥ 4.10, < 4.14.291 | ≥ 4.15, < 4.19.256 | ≥ 4.20, < 5.4.211 | ≥ 5.5, < 5.10.137 | ≥ 5.11, < 5.15.61 | ≥ 5.16, < 5.18.18 | ≥ 5.19, < 5.19.2
Debian1 product
- linux< 6.0.2-1
3 vendors · 114 products