High severity · published Oct 23, 2026
CVE-2026-99050
gpio: mpsse: fix race when arming the IRQ poll worker
New
7.8
CVSS
0.2%
EPSS
No
On KEV
Description
In the Linux kernel, the following vulnerability has been resolved:
gpio: mpsse: fix race when arming the IRQ poll worker
gpio_mpsse_irq_enable() arms the poll worker before publishing it:
schedule_work() runs before the worker is added to priv->workers. If
gpio_mpsse_disconnect() walks the list in that window it misses the
worker, and once disconnect returns, the USB core frees mpsse_priv
while the orphaned gpio_mpsse_poll() work keeps accessing it, causing
a use-after-free.
Fix this by publishing and arming the worker in one irq_spin
critical section. Teardown walks the same list under irq_spin, so a
worker found on the list is guaranteed to be armed, and
cancel_work_sync() handles it whether it is queued or running.
A worker armed after the disconnect walk would still be missed, so
also set a new priv->dying flag under irq_spin before the teardown
walk, and check it in the same critical section, freeing it via
kfree_rcu() instead when the device is going away, since kfree()
would be called with the IRQ core's raw spinlock held and may sleep
on PREEMPT_RT. schedule_work() is safe to call with irq_spin held,
and the next probe gets a fresh mpsse_priv, so the flag never needs
to be cleared.
This issue was found by an in-house static analysis tool.
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack vector
Local
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.2% · higher than 5% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
LI
Linux · Linux
472d900c8bcac301ae0e40fdca7db799bd989ff5 before 76390ac0bca7e5058b7482eb4d951c3bda5df812; 179ef1127d7a4f09f0e741fa9f30b8a8e7886271 before c0071ee496e1228976c72b096f529503222708a0; 179ef1127d7a4f09f0e741fa9f30b8a8e7886271 before 7efa1a1953cd6b20b23a3524d5b4b81789c6ef25; 6.18.6 before 6.18.57; 6.19 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-99050
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-99050
git.kernel.org
https://git.kernel.org/stable/c/76390ac0bca7e5058b7482eb4d951c3bda5df812
git.kernel.org
https://git.kernel.org/stable/c/7efa1a1953cd6b20b23a3524d5b4b81789c6ef25
git.kernel.org
https://git.kernel.org/stable/c/c0071ee496e1228976c72b096f529503222708a0
More from Linux
9.8
CVE-2025-39682
tls: fix handling of zero-length records on the rx_list
8.8
CVE-2026-53266
netfilter: bridge: make ebt_snat ARP rewrite writable
7.8
CVE-2026-53362
ipv6: account for fraggap on the paged allocation path
7.8
CVE-2026-31431
crypto: algif_aead - Revert to operating out-of-place
7.8
CVE-2025-38352
posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()
