|
@@ -782,6 +782,9 @@ static void __perf_install_in_context(void *info)
|
|
|
|
|
|
add_event_to_ctx(event, ctx);
|
|
|
|
|
|
+ if (event->cpu != -1 && event->cpu != smp_processor_id())
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
/*
|
|
|
* Don't put the event on if it is disabled or if
|
|
|
* it is in a group and the group isn't on.
|
|
@@ -925,6 +928,9 @@ static void __perf_event_enable(void *info)
|
|
|
goto unlock;
|
|
|
__perf_event_mark_enabled(event, ctx);
|
|
|
|
|
|
+ if (event->cpu != -1 && event->cpu != smp_processor_id())
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
/*
|
|
|
* If the event is in a group and isn't the group leader,
|
|
|
* then don't put it on unless the group is on.
|
|
@@ -1595,10 +1601,7 @@ static struct perf_event_context *find_get_context(pid_t pid, int cpu)
|
|
|
unsigned long flags;
|
|
|
int err;
|
|
|
|
|
|
- /*
|
|
|
- * If cpu is not a wildcard then this is a percpu event:
|
|
|
- */
|
|
|
- if (cpu != -1) {
|
|
|
+ if (pid == -1 && cpu != -1) {
|
|
|
/* Must be root to operate on a CPU event: */
|
|
|
if (perf_paranoid_cpu() && !capable(CAP_SYS_ADMIN))
|
|
|
return ERR_PTR(-EACCES);
|