{"id":29116,"date":"2026-09-25T20:31:54","date_gmt":"2026-09-25T12:31:54","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97960"},"modified":"2026-09-25T20:31:54","modified_gmt":"2026-09-25T12:31:54","slug":"cve-2026-97960","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97960","title":{"rendered":"CVE-2026-97960 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nperf\/x86\/intel: Preve"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>perf\/x86\/intel: Prevent drain_pebs() reentry<\/p>\n<p>The PEBS buffer is shared by all events on a CPU, so drain_pebs() must<br \/>\nnot be reentered. If so, one instance may observe stale buffer state and<br \/>\npotentially access out-of-bound memory.<\/p>\n<p>Most invocations happen in NMI context, which naturally prevents reentry.<br \/>\nHowever, drain_pebs() is also reachable from process context via<br \/>\nintel_pmu_drain_pebs_buffer().<\/p>\n<p>In those paths, the PMU is often already disabled, but not guaranteed.<br \/>\nFor example, __intel_pmu_pebs_disable() only disables the target counter,<br \/>\nso other active counters can still raise a PMI and interrupt an in-flight<br \/>\ndrain_pebs(). Here is an example,<\/p>\n<p>__perf_addr_filters_adjust()<br \/>\n  perf_event_stop()<br \/>\n    __perf_event_stop()<br \/>\n      x86_pmu_stop() (event-&gt;pmu-&gt;stop)<br \/>\n        intel_pmu_disable_event()<br \/>\n          intel_pmu_pebs_disable()<br \/>\n            __intel_pmu_pebs_disable()<br \/>\n              intel_pmu_drain_large_pebs()<br \/>\n                intel_pmu_drain_pebs_buffer()<\/p>\n<p>Introduce __intel_pmu_quiesce() and __intel_pmu_resume() helpers and<br \/>\nuse them in intel_pmu_drain_large_pebs() to disable the full PMU<br \/>\naround the intel_pmu_drain_pebs_buffer() call, preventing reentry.<\/p>\n<p>Also add a warning in intel_pmu_drain_pebs_buffer() when the full PMU is<br \/>\nnot disabled.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>perf\/x86\/intel: Prevent drain_pebs() reentry<\/p>\n<p>The PEBS buffer is shared by all events on a CPU, so drain_pebs() must<br \/>\nnot be reenter<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29116","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29116","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=29116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}