Skip to content

Commit

Permalink
x86, perf: P4 PMU -- check for proper event index in RAW events
Browse files Browse the repository at this point in the history
RAW events are special and we should be ready for user passing
in insane event index values.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Lin Ming <ming.m.lin@intel.com>
LKML-Reference: <20100508112717.315897547@openvz.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Cyrill Gorcunov authored and Ingo Molnar committed May 8, 2010
1 parent 3f51b71 commit c799316
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion arch/x86/kernel/cpu/perf_event_p4.c
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@ static int p4_hw_config(struct perf_event *event)
{
int cpu = get_cpu();
int rc = 0;
unsigned int evnt;
u32 escr, cccr;

/*
Expand All @@ -436,6 +437,14 @@ static int p4_hw_config(struct perf_event *event)
event->hw.config = p4_set_ht_bit(event->hw.config);

if (event->attr.type == PERF_TYPE_RAW) {

/* user data may have out-of-bound event index */
evnt = p4_config_unpack_event(event->attr.config);
if (evnt >= ARRAY_SIZE(p4_event_bind_map)) {
rc = -EINVAL;
goto out;
}

/*
* We don't control raw events so it's up to the caller
* to pass sane values (and we don't count the thread number
Expand All @@ -451,8 +460,8 @@ static int p4_hw_config(struct perf_event *event)
}

rc = x86_setup_perfctr(event);
out:
put_cpu();

return rc;
}

Expand Down

0 comments on commit c799316

Please sign in to comment.