{"id":41313,"date":"2026-10-19T00:33:10","date_gmt":"2026-10-18T16:33:10","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98841"},"modified":"2026-10-19T00:33:10","modified_gmt":"2026-10-18T16:33:10","slug":"cve-2026-98841","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98841","title":{"rendered":"CVE-2026-98841 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nvirt: vmgenid: set dr"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>virt: vmgenid: set driver_data before registering notification handlers<\/p>\n<p>Both probe paths register their notification handler before assigning<br \/>\ndriver_data, which the handler dereferences.<\/p>\n<p>In the devicetree path, the notification IRQ can fire as soon as<br \/>\ndevm_request_irq() registers the handler: the interrupt may already be<br \/>\npending at probe time, for example when a VMM injects the<br \/>\ngeneration-changed notification while restoring a guest from a snapshot<br \/>\nthat was taken before the driver had probed (Firecracker does exactly<br \/>\nthis on snapshot restore). The IRQ is also requested with IRQF_SHARED,<br \/>\nso another device sharing the line can trigger the handler just as<br \/>\nearly. The handler then calls vmgenid_notify(), which dereferences the<br \/>\nstill-NULL driver_data and panics:<\/p>\n<p>  Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010<br \/>\n  CPU: 0 UID: 0 PID: 1 Comm: swapper\/0 Not tainted 6.18.38+ #1 PREEMPT(none)<br \/>\n  Hardware name: linux,dummy-virt (DT)<br \/>\n  pc : vmgenid_notify.isra.0+0x24\/0x8c<br \/>\n  lr : vmgenid_of_irq_handler+0x14\/0x34<br \/>\n  Call trace:<br \/>\n   vmgenid_notify.isra.0+0x24\/0x8c (P)<br \/>\n   vmgenid_of_irq_handler+0x14\/0x34<br \/>\n   __handle_irq_event_percpu+0x44\/0x1bc<br \/>\n   handle_irq_event+0x4c\/0xb4<br \/>\n   handle_fasteoi_irq+0xf8\/0x1f8<\/p>\n<p>The ACPI path has the same ordering problem: the handler is installed<br \/>\nwith acpi_install_notify_handler() before driver_data is assigned.<br \/>\nACPI notifications are dispatched asynchronously from a workqueue, so<br \/>\nthe window is narrow, but a notification arriving between the two calls<br \/>\nhits the same NULL dereference.<\/p>\n<p>Assign driver_data before registering the handlers. The state is fully<br \/>\ninitialized at that point, so the handlers are safe to run. Should<br \/>\nregistration fail, the probe error path leaves no dangling pointer<br \/>\nbehind: the driver core clears driver_data in device_unbind_cleanup().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>virt: vmgenid: set driver_data before registering notification handlers<\/p>\n<p>Both probe paths register their notification handler befor<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41313","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41313","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=41313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}