CVE-2026-98509 Overview
CVE-2026-98509 is a memory leak vulnerability in the Linux kernel's drm/virtio driver. The flaw resides in virtio_gpu_execbuffer_ioctl(), which reserves a DRM event via drm_event_reserve_init() before validating execbuffer arguments. When userspace enables polling on a ring selected by VIRTGPU_EXECBUF_RING_IDX, any later error path, including simple argument validation failures, leaks the pending event allocation.
The issue was discovered through Syzkaller fuzzing of the virtio driver and reported against the kernel's drm subsystem. A patch has been merged across multiple stable kernel branches.
Critical Impact
Local unprivileged users invoking the virtio-gpu execbuffer ioctl with malformed arguments can permanently leak kernel memory, enabling resource exhaustion against virtualized hosts.
Affected Products
- Linux kernel drm/virtio driver (virtgpu_submit.c)
- Virtualized guests using virtio-gpu with ring polling enabled
- Stable kernel branches referenced in the upstream fix commits
Discovery Timeline
- 2026-10-18 - CVE-2026-98509 published to NVD
- 2026-10-19 - Last updated in NVD database
Technical Details for CVE-2026-98509
Vulnerability Analysis
The vulnerability is a Memory Leak [CWE-401] in the virtio GPU submission path. virtio_gpu_init_submit() calls virtio_gpu_fence_event_create() to allocate and reserve a DRM event before processing buffer object (BO) handles, the command buffer, syncobj arrays, and the in-fence. When any subsequent validation step fails, control transfers to virtio_gpu_cleanup_submit(), which drops the out-fence without cancelling the already-pending event.
Because the fence is freed before it is ever emitted, the only driver-side pointer to the event is lost. Closing the DRM file does not recover the allocation: drm_events_release() unlinks pending events but delegates freeing to a later drm_send_event() call that never runs for an orphaned event. The 96-byte allocation leaks permanently, as confirmed by the kmemleak trace in the Syzkaller report.
Root Cause
The root cause is incorrect error-path ordering. The DRM event is reserved before argument validation, but the cleanup routine only tears down the fence, not the event. The event's lifecycle is implicitly tied to a successful emit path that never executes on failure, leaving the allocation unreachable.
Attack Vector
A local unprivileged user with access to /dev/dri/renderD* on a system exposing virtio-gpu can repeatedly invoke the execbuffer ioctl with VIRTGPU_EXECBUF_RING_IDX set and intentionally invalid parameters, such as a bad bo_handle or an in-syncobj with no fence. Each failed call leaks a small allocation. Sustained invocation enables kernel memory exhaustion, a denial-of-service condition against the host or guest kernel.
See the upstream fix in the Linux Kernel Commit Log for the exact code change.
Detection Methods for CVE-2026-98509
Indicators of Compromise
- Kmemleak reports flagging unreferenced 96-byte allocations originating from virtio_gpu_fence_event_create and virtio_gpu_init_submit.
- Steady growth of kernel slab memory under kmalloc-96 on hosts or guests running virtio-gpu workloads.
- Repeated DRM_IOCTL_VIRTGPU_EXECBUFFER calls returning errors from a single process.
Detection Strategies
- Enable CONFIG_DEBUG_KMEMLEAK on test and pre-production kernels to surface the leak during fuzz testing or QA.
- Audit /proc/slabinfo for abnormal growth of generic kmalloc caches on virtio-gpu guests.
- Instrument the drm ioctl path with eBPF to track virtio_gpu_execbuffer_ioctl failure rates per PID.
Monitoring Recommendations
- Correlate high-volume failed drm ioctl syscalls with per-process memory accounting to identify abuse.
- Alert on sustained kernel slab growth that does not correlate with legitimate workload scaling.
- Collect kernel logs for kmemleak and OOM events from virtualized guests exposing virtio-gpu to userspace.
How to Mitigate CVE-2026-98509
Immediate Actions Required
- Apply the upstream patch to all kernels running the drm/virtio driver, prioritizing multi-tenant virtualization hosts and guests.
- Restrict access to /dev/dri/renderD* nodes to trusted users and service accounts where possible.
- Rebase downstream and distribution kernels onto the fixed stable branches before deploying to production.
Patch Information
The fix cancels and frees the DRM event on the execbuffer error path before dropping the fence, and clears the fence's event pointer after cancellation to avoid a dangling reference. Patches are available in the following commits: 43bfe2b6, 4e333e23, 8fa78900, ae583668, and b74aad23.
Workarounds
- Disable or do not expose the virtio-gpu device to untrusted guests until the kernel is patched.
- Remove or tighten permissions on DRM render nodes to prevent unprivileged processes from invoking the vulnerable ioctl.
- Monitor and recycle long-running guests exhibiting unexplained kernel memory growth to reclaim leaked allocations.
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

