{"id":"CVE-2026-89738","title":"usb: gadget: at91_udc: drain polled-VBUS timer/work before udc is freed","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: at91_udc: drain polled-VBUS timer/work before udc is freed\n\nIn polled-VBUS mode (board.vbus_pin && board.vbus_polled), probe arms a\nself-restarting cycle: …","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","cvssSource":"cna","cwe":["CWE-825"],"vendor":"Linux","product":"Linux","affected":["Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 723d73b245843d4fff4c3f42e857c78c2b2d414e","Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < a2a602cb1e28d76a5398cec3fa21b0110385f501","Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 51a311eb97e91ce1aed3005cb71ccb2e30f8cce8","Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 557ef547d49ff5e6026a4d39bdd3113bd81d7688","Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < c27d13ce4bab80fbdf6523928071b6c24b37606c","Linux 2.6.36"],"published":"2026-09-11","updated":"2026-10-21","sourceUpdated":"2026-10-21T12:48:31.419Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-89738","references":[{"url":"https://git.kernel.org/stable/c/723d73b245843d4fff4c3f42e857c78c2b2d414e"},{"url":"https://git.kernel.org/stable/c/a2a602cb1e28d76a5398cec3fa21b0110385f501"},{"url":"https://git.kernel.org/stable/c/51a311eb97e91ce1aed3005cb71ccb2e30f8cce8"},{"url":"https://git.kernel.org/stable/c/557ef547d49ff5e6026a4d39bdd3113bd81d7688"},{"url":"https://git.kernel.org/stable/c/c27d13ce4bab80fbdf6523928071b6c24b37606c"},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89738.json"},{"url":"https://access.redhat.com/security/cve/CVE-2026-89738"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2532232"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-89738"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-89738"},{"url":"https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89738.mbox"}],"tags":["cve.org","csaf","vex","red-hat","score-dispute"],"epss":0.00192,"epssPercentile":0.08744,"scores":{"cna":7.8,"vendor":5.5},"ingestedAt":"2026-09-14T15:23:07.472Z","slug":"CVE-2026-89738","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: at91_udc: drain polled-VBUS timer/work before udc is freed\n\nIn polled-VBUS mode (board.vbus_pin && board.vbus_polled), probe arms a\nself-restarting cycle: at91_vbus_timer() schedules vbus_timer_work, and\nat91_vbus_timer_work() calls at91_vbus_update() and re-arms the timer via\nmod_timer(). Both recover the same udc through container_of and dereference\nit on every iteration.\n\nNeither teardown path cancels this cycle. udc is devm-allocated, so it is\nfreed after at91udc_remove() returns, and is likewise freed when probe\nfails and devres runs. A timer callback or work item that is pending or\nrunning at either point dereferences the freed udc.\n\nAdd at91_udc_shutdown_vbus_timer() and call it from at91udc_remove() and\nfrom the usb_add_gadget_udc() failure path in probe; the remaining probe\nerror paths fail before the timer is armed. timer_shutdown_sync() waits\nfor a running callback and clears timer->function, which makes the work\nhandler's mod_timer() a permanent no-op; cancel_work_sync() then drains\nany pending or running work whose re-arm attempt now does nothing. The\ntimer must be shut down first, since cancelling the work alone would let\nthe timer re-queue it. The guard mirrors probe: in IRQ mode the timer and\nwork_struct are never initialized.\n\nThis does not require a fault; a normal driver unbind can interleave with\nan already queued work item.\n\nThis issue was found by an in-house static analysis tool.\n\n## Affected\n\n- `Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 723d73b245843d4fff4c3f42e857c78c2b2d414e`\n- `Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < a2a602cb1e28d76a5398cec3fa21b0110385f501`\n- `Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 51a311eb97e91ce1aed3005cb71ccb2e30f8cce8`\n- `Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < 557ef547d49ff5e6026a4d39bdd3113bd81d7688`\n- `Linux >= 4037242c4f5ff77afe61bf07ca1e8a99490219e5 < c27d13ce4bab80fbdf6523928071b6c24b37606c`\n- `Linux 2.6.36`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Vendor advisories\n\n- **Red Hat VEX** · Moderate · updated 2026-09-21 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89738.json)","depth":"twilight","depthScore":43,"depthScoreParts":{"impact":42.9,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[{"seq":224586,"id":"CVE-2026-89738","ts":1792401420998,"field":"cvss","old":"5.5","new":"7.8"},{"seq":224585,"id":"CVE-2026-89738","ts":1792401420998,"field":"severity","old":"medium","new":"high"},{"seq":208954,"id":"CVE-2026-89738","ts":1790062299007,"field":"cvss","old":"4.1","new":"5.5"},{"seq":203037,"id":"CVE-2026-89738","ts":1789403733450,"field":"cvss","old":"7.8","new":"4.1"},{"seq":203036,"id":"CVE-2026-89738","ts":1789403733450,"field":"severity","old":"high","new":"medium"},{"seq":197686,"id":"CVE-2026-89738","ts":1789384318402,"field":"cvss","old":"4.1","new":"7.8"},{"seq":197685,"id":"CVE-2026-89738","ts":1789384318402,"field":"severity","old":"medium","new":"high"},{"seq":183835,"id":"CVE-2026-89738","ts":1789356677606,"field":"cvss","old":"7.8","new":"4.1"},{"seq":183834,"id":"CVE-2026-89738","ts":1789356677606,"field":"severity","old":"high","new":"medium"},{"seq":153622,"id":"CVE-2026-89738","ts":1789285351582,"field":"cvss","old":null,"new":"7.8"},{"seq":153621,"id":"CVE-2026-89738","ts":1789285351582,"field":"severity","old":"none","new":"high"},{"seq":147514,"id":"CVE-2026-89738","ts":1789270211206,"field":"cvss","old":null,"new":"4.1"},{"seq":147513,"id":"CVE-2026-89738","ts":1789270211206,"field":"severity","old":"none","new":"medium"},{"seq":109268,"id":"CVE-2026-89738","ts":1789183731213,"field":"cvss","old":null,"new":"4.1"},{"seq":109267,"id":"CVE-2026-89738","ts":1789183731213,"field":"severity","old":"none","new":"medium"}]}