All vulnerabilities
CVE-2026-97996

Linux: virtio: fix use-after-free in unregister_virtio_device()

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 5% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in951cad50cba89e736afdee4a730e0e52f9245c9bAlso 77dbd10a701a30fdfea5c3bb7a29163128f9a9c7, 3f9a0fceb730f5107d52421ead5568eae25a0049CVE List
Published25 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 951cad50cba89e736afdee4a730e0e52f9245c9bLinuxCVE List
  • 77dbd10a701a30fdfea5c3bb7a29163128f9a9c7LinuxCVE List
  • 3f9a0fceb730f5107d52421ead5568eae25a0049LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

virtio: fix use-after-free in unregister_virtio_device()

device_unregister() is device_del() plus put_device(). When the caller holds no extra reference, that drops the last one and runs the release callback, which for several transports frees the memory the embedded struct virtio_device sits in. unregister_virtio_device() then calls virtio_debug_device_exit(), which reads dev->debugfs_dir out of the freed object.

Affected transports are the ones whose release callback frees and whose remove path takes no reference: virtio_mmio, virtio_vdpa, virtio_uml, mlxbf-tmfifo and virtio_ccw. virtio_pci is unaffected because virtio_pci_remove() brackets the call with get_device() and put_device().

Remove the debugfs entries before the device can go away. They are only accessed through the protected debugfs interface, so debugfs_remove_recursive() waits for in-progress file operations before returning. Tearing them down while the device is still alive is therefore safe.

Reproduced on User-Mode Linux with CONFIG_KASAN and CONFIG_VIRTIO_DEBUG by unbinding a virtio-uml device:

BUG: KASAN: slab-use-after-free in virtio_debug_device_exit+0x36/0x4d Read of size 8 at addr 00000000616e0b10 by task init/1 __asan_report_load8_noabort virtio_debug_device_exit+0x36/0x4d unregister_virtio_device+0x48/0x75 virtio_uml_remove platform_remove device_release_driver_internal unbind_store

Freed by task 1: kfree virtio_uml_release_dev device_release kobject_put put_device device_unregister

With this applied, the report is gone and unbind is clean.

Text from CVE List

Affected versions 10

  • Linuxaffected: 96a8326d69fffd7e8c2eb737dc060d8009a33b39 before 951cad50cba89e736afdee4a730e0e52f9245c9bCVE List
  • Linuxaffected: 96a8326d69fffd7e8c2eb737dc060d8009a33b39 before 77dbd10a701a30fdfea5c3bb7a29163128f9a9c7CVE List
  • Linuxaffected: 96a8326d69fffd7e8c2eb737dc060d8009a33b39 before caf042153016d651b55d0fb4a63cdf7d0d23dee2CVE List
  • Linuxaffected: 96a8326d69fffd7e8c2eb737dc060d8009a33b39 before 3f9a0fceb730f5107d52421ead5568eae25a0049CVE List
  • Linuxaffected: 6.10CVE List
  • Linuxunaffected: all versions before 6.10CVE List
  • Linuxunaffected: 6.12.111 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 4