Skip to content

Commit dbde07f

Browse files
captain5050Peter Zijlstra
authored andcommitted
perf/x86: Fix potential bad container_of in intel_pmu_hw_config
Auto counter reload may have a group of events with software events present within it. The software event PMU isn't the x86_hybrid_pmu and a container_of operation in intel_pmu_set_acr_caused_constr (via the hybrid helper) could cause out of bound memory reads. Avoid this by guarding the call to intel_pmu_set_acr_caused_constr with an is_x86_event check. Fixes: ec980e4 ("perf/x86/intel: Support auto counter reload") Signed-off-by: Ian Rogers <irogers@google.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Thomas Falcon <thomas.falcon@intel.com> Link: https://patch.msgid.link/20260312194305.1834035-1-irogers@google.com
1 parent 7aaa804 commit dbde07f

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

arch/x86/events/intel/core.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4855,8 +4855,10 @@ static int intel_pmu_hw_config(struct perf_event *event)
48554855
intel_pmu_set_acr_caused_constr(leader, idx++, cause_mask);
48564856

48574857
if (leader->nr_siblings) {
4858-
for_each_sibling_event(sibling, leader)
4859-
intel_pmu_set_acr_caused_constr(sibling, idx++, cause_mask);
4858+
for_each_sibling_event(sibling, leader) {
4859+
if (is_x86_event(sibling))
4860+
intel_pmu_set_acr_caused_constr(sibling, idx++, cause_mask);
4861+
}
48604862
}
48614863

48624864
if (leader != event)

0 commit comments

Comments
 (0)