{
  "cveId": "CVE-2022-50220",
  "url": "https://patchblox.com/security/cve/CVE-2022-50220",
  "summary": "CVE-2022-50220 is fixed in linux on 1 platform, first by DEBIAN-CVE-2022-50220, released June 18, 2025. It is not reported as exploited. Patch Radar priority: High.",
  "title": "linux: In the Linux kernel, the following vulnerability has been resolved:  usbnet: Fix linkwatch use-after-free on disconne...",
  "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 -\u003Endo_stop().  But in 2003, that was moved to -\u003Edisconnect() by historic commit \u0022[PATCH] USB: usbnet, prevent exotic rtnl deadlock\u0022:    https://git.kernel.org/tglx/history/c/0f138bbfd83c  The change was made because back then, the kernel\u0027s 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 -\u003Endo_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)   -\u003Estatus() callback and schedule usbnet_deferred_kevent(). * usbnet_deferred_kevent() invokes the driver\u0027s -\u003Elink_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 (\u0022drivers/net: don\u0027t use flush_scheduled_work()\u0022).  Unfortunately the commit neglected to move the wait back to -\u003Endo_stop().  Rectify that omission at long last.",
  "published": "2025-06-18T11:15:52Z",
  "severity": "high",
  "cvss": 7.8,
  "cvssVector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
  "epss": 0.00246,
  "epssPercentile": 0.15958,
  "priority": "High",
  "priorityTier": 3,
  "exploited": false,
  "vendorExploited": false,
  "disclosed": false,
  "fixes": [
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 12.15 (bookworm)",
      "fixedVersion": "6.0.2-1",
      "fix": "DEBIAN-CVE-2022-50220",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2022-50220",
      "released": "2025-06-18T11:15:52Z"
    },
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 13.5 (trixie)",
      "fixedVersion": "6.0.2-1",
      "fix": "DEBIAN-CVE-2022-50220",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2022-50220",
      "released": "2025-06-18T11:15:52Z"
    },
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 14",
      "fixedVersion": "6.0.2-1",
      "fix": "DEBIAN-CVE-2022-50220",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2022-50220",
      "released": "2025-06-18T11:15:52Z"
    }
  ],
  "noFixYet": [],
  "dataAsOf": "2026-11-08T13:06:02Z",
  "attribution": {
    "text": "Data: Patchblox Patch Radar",
    "url": "https://patchblox.com/security/patch-radar",
    "terms": "https://patchblox.com/security/patch-radar/use-the-data"
  }
}