{"id":40936,"date":"2026-10-19T00:31:37","date_gmt":"2026-10-18T16:31:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98464"},"modified":"2026-10-19T00:31:37","modified_gmt":"2026-10-18T16:31:37","slug":"cve-2026-98464","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98464","title":{"rendered":"CVE-2026-98464 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nRISC-V: KVM: Synchron"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RISC-V: KVM: Synchronize hrtimer callback during teardown<\/p>\n<p>The non-Sstc hrtimer callback clears next_set before its final uses of<br \/>\nthe enclosing vCPU.  If teardown observes next_set as false while the<br \/>\ncallback is still running, kvm_riscv_vcpu_timer_cancel() skips<br \/>\nhrtimer_cancel() and kvm_destroy_vcpus() can free the vCPU before the<br \/>\ncallback enters kvm_riscv_vcpu_set_interrupt().<\/p>\n<p>A guest can arm the timer with SBI TIME and request shutdown with SBI<br \/>\nlegacy shutdown or SRST.  A VMM that honors KVM_EXIT_SYSTEM_EVENT and<br \/>\ndestroys the VM supplies the teardown side of the race; no post-launch<br \/>\nhost ioctl is needed to arm or request teardown.<\/p>\n<p>On upstream master 62cc90241548, generic KASAN reported:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in do_raw_spin_lock<br \/>\n  Write of size 4 at addr ff60000005e58898<\/p>\n<p>  kvm_riscv_vcpu_set_interrupt<br \/>\n  kvm_riscv_vcpu_hrtimer_expired<br \/>\n  __hrtimer_run_queues<br \/>\n  hrtimer_interrupt<\/p>\n<p>The object was allocated by KVM_CREATE_VCPU and freed concurrently by:<\/p>\n<p>  kvm_destroy_vcpus<br \/>\n  kvm_arch_destroy_vm<br \/>\n  kvm_destroy_vm<br \/>\n  __fput<\/p>\n<p>For deterministic validation, I added mdelay(1000) immediately after<br \/>\nthe existing next_set = false assignment.  This only widens the<br \/>\nexisting post-clear callback window.  A no-delay trace build naturally<br \/>\nreached the callback-after-teardown-start\/before-deinit ordering in 12<br \/>\nof 200 runs, but 1,500 stock-kernel stress iterations did not produce a<br \/>\nKASAN report, so natural reproduction is timing-sensitive.<\/p>\n<p>Always invoke hrtimer_cancel() for an initialized timer.  Preserve the<br \/>\nexisting -EINVAL result when the timer is no longer set, but only after<br \/>\nsynchronizing with a running callback.<\/p>\n<p>With this patch, hrtimer_cancel() blocked for the full widened callback<br \/>\nwindow before vCPU destruction.  KASAN reported no error in 100<br \/>\nfixed-and-widened runs or 200 fix-only timing-sweep runs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RISC-V: KVM: Synchronize hrtimer callback during teardown<\/p>\n<p>The non-Sstc hrtimer callback clears next_set before its final uses of<br \/>\nt<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-40936","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/40936","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=40936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}