diff options
| author | Kan Liang <[email protected]> | 2025-06-12 14:38:18 +0000 |
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2025-06-13 07:38:06 +0000 |
| commit | b0823d5fbacb1c551d793cbfe7af24e0d1fa45ed (patch) | |
| tree | 6b9852ee8533249e77e3a8da04dccf9cece36baa /rust/helpers/helpers.c | |
| parent | perf: Fix the throttle error of some clock events (diff) | |
| download | kernel-b0823d5fbacb1c551d793cbfe7af24e0d1fa45ed.tar.gz kernel-b0823d5fbacb1c551d793cbfe7af24e0d1fa45ed.zip | |
perf/x86/intel: Fix crash in icl_update_topdown_event()
The perf_fuzzer found a hard-lockup crash on a RaptorLake machine:
Oops: general protection fault, maybe for address 0xffff89aeceab400: 0000
CPU: 23 UID: 0 PID: 0 Comm: swapper/23
Tainted: [W]=WARN
Hardware name: Dell Inc. Precision 9660/0VJ762
RIP: 0010:native_read_pmc+0x7/0x40
Code: cc e8 8d a9 01 00 48 89 03 5b cd cc cc cc cc 0f 1f ...
RSP: 000:fffb03100273de8 EFLAGS: 00010046
....
Call Trace:
<TASK>
icl_update_topdown_event+0x165/0x190
? ktime_get+0x38/0xd0
intel_pmu_read_event+0xf9/0x210
__perf_event_read+0xf9/0x210
CPUs 16-23 are E-core CPUs that don't support the perf metrics feature.
The icl_update_topdown_event() should not be invoked on these CPUs.
It's a regression of commit:
f9bdf1f95339 ("perf/x86/intel: Avoid disable PMU if !cpuc->enabled in sample read")
The bug introduced by that commit is that the is_topdown_event() function
is mistakenly used to replace the is_topdown_count() call to check if the
topdown functions for the perf metrics feature should be invoked.
Fix it.
Fixes: f9bdf1f95339 ("perf/x86/intel: Avoid disable PMU if !cpuc->enabled in sample read")
Closes: https://lore.kernel.org/lkml/[email protected]/
Reported-by: Vince Weaver <[email protected]>
Signed-off-by: Kan Liang <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Tested-by: Vince Weaver <[email protected]>
Cc: [email protected] # v6.15+
Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'rust/helpers/helpers.c')
0 files changed, 0 insertions, 0 deletions
