CVE-2025-68375 in Linux
摘要
由 VulDB • 2026-06-05
在 Linux 内核中,已修复以下漏洞:
perf/x86:修复对 NULL 事件的访问及潜在的 PEBS 记录丢失问题
当调用 `intel_pmu_drain_pebs_icl()` 来刷新(drain)PEBS 记录时,可能会调用 `perf_event_overflow()` 来处理最后的 PEBS 记录。
由于 `perf_event_overflow()` 可能触发中断节流(interrupt throttle)并停止组内的所有事件,如下调用链所示:
perf_event_overflow() -> __perf_event_overflow() -> __perf_event_account_interrupt() -> perf_event_throttle_group() -> perf_event_throttle() -> event->pmu->stop() -> x86_pmu_stop()
停止事件带来的副作用是,`cpuc->events[]` 数组中所有相应的事件指针都被清零为 NULL。
假设组内有两个 PEBS 事件(事件 a 和事件 b)。当 `intel_pmu_drain_pebs_icl()` 调用 `perf_event_overflow()` 处理 PEBS 事件 a 的最后一条 PEBS 记录时,会触发中断节流,导致事件 a 和事件 b 的所有指针都被清零为 NULL。随后,`intel_pmu_drain_pebs_icl()` 尝试处理事件 b 的最后一条 PEBS 记录时,会遇到对 NULL 指针的访问。
为避免此问题,将 `cpuc->events[]` 的清零操作从 `x86_pmu_stop()` 移至 `x86_pmu_del()`。这是安全的,因为在从 `cpuc->events[]` 访问事件指针之前,始终会检查 `cpuc->active_mask` 或 `cpuc->pebs_enabled`。
If you want to get best quality of vulnerability data, you may have to visit VulDB.