{"id":40981,"date":"2026-10-19T00:31:44","date_gmt":"2026-10-18T16:31:44","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98509"},"modified":"2026-10-19T00:31:44","modified_gmt":"2026-10-18T16:31:44","slug":"cve-2026-98509","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98509","title":{"rendered":"CVE-2026-98509 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/virtio: fix memor"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/virtio: fix memory leak of fence event on execbuffer failure<\/p>\n<p>virtio_gpu_execbuffer_ioctl() reserves a DRM event with<br \/>\ndrm_event_reserve_init() when VIRTGPU_EXECBUF_RING_IDX selects a ring that<br \/>\nuserspace has enabled polling for. virtio_gpu_init_submit() does this<br \/>\nbefore the BO handles, the command buffer, the syncobj arrays and the<br \/>\nin-fence are processed, so every later error path runs with the event<br \/>\nalready pending, including plain argument validation failures such as an<br \/>\ninvalid bo_handle or an in-syncobj that carries no fence.<\/p>\n<p>On those paths, virtio_gpu_cleanup_submit() drops the out-fence without<br \/>\ncancelling the event. The fence is freed without ever having been emitted,<br \/>\ntaking the only driver-side pointer to the event with it. Closing the DRM<br \/>\nfile does not help. drm_events_release() unlinks pending events but<br \/>\ndeliberately leaves the freeing to the driver&#8217;s later drm_send_event(),<br \/>\nwhich never runs for an orphaned event, so the allocation is leaked<br \/>\npermanently.<\/p>\n<p>Found when fuzzing the virtio driver with Syzkaller:<\/p>\n<p>\tBUG: memory leak<br \/>\n\tunreferenced object 0xffff88802c176e80 (size 96):<br \/>\n\tcomm &#8220;syz.1.367&#8221;, pid 10561, jiffies 4294960122<br \/>\n\thex dump (first 32 bytes):<br \/>\n\t\t00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  &#8230;&#8230;&#8230;&#8230;&#8230;.<br \/>\n\t\tc8 6e 17 2c 80 88 ff ff 00 00 00 00 00 00 00 00  .n.,&#8230;&#8230;&#8230;&#8230;<br \/>\n\tbacktrace (crc e1973c6b):<br \/>\n\t\tkmemleak_alloc_recursive include\/linux\/kmemleak.h:44 [inline]<br \/>\n\t\tslab_post_alloc_hook mm\/slub.c:4597 [inline]<br \/>\n\t\tslab_alloc_node mm\/slub.c:4917 [inline]<br \/>\n\t\t__kmalloc_cache_noprof+0x49d\/0x6f0 mm\/slub.c:5485<br \/>\n\t\t_kmalloc_noprof include\/linux\/slab.h:988 [inline]<br \/>\n\t\t_kzalloc_noprof include\/linux\/slab.h:1309 [inline]<br \/>\n\t\tvirtio_gpu_fence_event_create drivers\/gpu\/drm\/virtio\/virtgpu_submit.c:282 [inline]<br \/>\n\t\tvirtio_gpu_init_submit drivers\/gpu\/drm\/virtio\/virtgpu_submit.c:398 [inline]<br \/>\n\t\tvirtio_gpu_execbuffer_ioctl+0xbbf\/0x1aa0 drivers\/gpu\/drm\/virtio\/virtgpu_submit.c:505<br \/>\n\t\tdrm_ioctl_kernel+0x1f4\/0x3e0 drivers\/gpu\/drm\/drm_ioctl.c:817<br \/>\n\t\tdrm_ioctl+0x5f4\/0xc70 drivers\/gpu\/drm\/drm_ioctl.c:914<br \/>\n\t\tvfs_ioctl fs\/ioctl.c:51 [inline]<br \/>\n\t\t__do_sys_ioctl fs\/ioctl.c:597 [inline]<br \/>\n\t\t__se_sys_ioctl fs\/ioctl.c:583 [inline]<br \/>\n\t\t__x64_sys_ioctl+0x18e\/0x210 fs\/ioctl.c:583<br \/>\n\t\tdo_syscall_x64 arch\/x86\/entry\/syscall_64.c:63 [inline]<br \/>\n\t\tdo_syscall_64+0x116\/0x800 arch\/x86\/entry\/syscall_64.c:94<br \/>\n\t\tentry_SYSCALL_64_after_hwframe+0x77\/0x7f<\/p>\n<p>Fix by cancelling and freeing the DRM event on the execbuffer error path<br \/>\nbefore dropping the fence. Clear the fence&#8217;s event pointer after<br \/>\ncancellation so it does not retain a dangling pointer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/virtio: fix memory leak of fence event on execbuffer failure<\/p>\n<p>virtio_gpu_execbuffer_ioctl() reserves a DRM event with<br \/>\ndrm_event<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-40981","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/40981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}