{"id":"CVE-2026-97986","title":"In the Linux kernel, the following vulnerability has been resolved:\n\nvirtio_input: stop callbacks before unregistering input device\n\nvirtinput_remove() unregisters the input device before resetting the\nvirtio device","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nvirtio_input: stop callbacks before unregistering input device\n\nvirtinput_remove() unregisters the input device before resetting the\nvirtio device. virtinput_recv_event…","severity":"none","vendor":"Linux","product":"Linux","affected":["Linux >= 271c865161c57cfabca45b93eaa712b19da365bc < 8226aeee9b9a94cd699fbb51cb230feff46cfaf2","Linux >= 271c865161c57cfabca45b93eaa712b19da365bc < a3ba86a270dd87460759214046dc7cbd409ac711","Linux >= 271c865161c57cfabca45b93eaa712b19da365bc < 5378f7945856a5ed88e6f9850bc7a68f54090135","Linux >= 271c865161c57cfabca45b93eaa712b19da365bc < d7808b37da0a619cf1fa541c2384e783fecc2480","Linux 4.1"],"published":"2026-09-25","updated":"2026-09-25","sourceUpdated":"2026-09-25T11:17:26.683","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-97986","references":[{"url":"https://git.kernel.org/stable/c/5378f7945856a5ed88e6f9850bc7a68f54090135","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/8226aeee9b9a94cd699fbb51cb230feff46cfaf2","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/a3ba86a270dd87460759214046dc7cbd409ac711","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/d7808b37da0a619cf1fa541c2384e783fecc2480","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"}],"tags":["nvd","cve.org"],"ingestedAt":"2026-09-25T11:06:38.866Z","slug":"CVE-2026-97986","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nvirtio_input: stop callbacks before unregistering input device\n\nvirtinput_remove() unregisters the input device before resetting the\nvirtio device. virtinput_recv_events() drops vi->lock around input_event(),\nso clearing vi->ready does not stop a callback that passed the entry check.\nIt can still use vi->idev, requeue buffers and kick the queue.\n\nReset first, as virtinput_freeze() already does. With the preceding core\nchange, reset waits for callbacks before input_unregister_device() can\nfree vi->idev. Recheck vi->ready after taking the lock again: keep draining\ncompleted events so an input packet is not truncated, but stop requeueing\nbuffers and kicking the queue.\n\nWith evdev attached, input_unregister_handle() currently waits for an RCU\ngrace period, which also waits out IRQ callbacks. This masks the lifetime\nbug on PCI and MMIO, but does not protect sleepable callbacks on other\ntransports.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":3,"depthScoreParts":{"impact":2.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}