Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (52 commits) perf record: Use per-task-per-cpu events for inherited events perf record: Properly synchronize child creation perf events: Allow per-task-per-cpu counters perf diff: Percent calcs should use double values perf diff: Change the default sort order to "dso,symbol" perf diff: Use perf_session__fprintf_hists just like 'perf record' perf report: Fix cut'n'paste error recently introduced perf session: Move perf report specific hits out of perf_session__fprintf_hists perf tools: Move hist entries printing routines from perf report perf report: Generalize perf_session__fprintf_hists() perf symbols: Move symbol filtering to event__preprocess_sample() perf symbols: Adopt the strlists for dso, comm perf symbols: Make symbol_conf global perf probe: Fix to show which probe point is not found perf probe: Check symbols in symtab/kallsyms perf probe: Check build-id of vmlinux perf probe: Reject second attempt of adding same-name event perf probe: Support event name for --add option perf probe: Add glob matching support on --del perf probe: Use strlist__for_each macros in probe-event.c ...
This commit is contained in:
@@ -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,15 +1601,12 @@ 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);
|
||||
|
||||
if (cpu < 0 || cpu > num_possible_cpus())
|
||||
if (cpu < 0 || cpu >= nr_cpumask_bits)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
/*
|
||||
@@ -4564,7 +4567,7 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
|
||||
if (attr->type >= PERF_TYPE_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
if (attr->__reserved_1 || attr->__reserved_2 || attr->__reserved_3)
|
||||
if (attr->__reserved_1 || attr->__reserved_2)
|
||||
return -EINVAL;
|
||||
|
||||
if (attr->sample_type & ~(PERF_SAMPLE_MAX-1))
|
||||
|
Reference in New Issue
Block a user