|
@@ -2233,9 +2233,6 @@ find_get_context(struct pmu *pmu, struct task_struct *task, int cpu)
|
|
if (perf_paranoid_cpu() && !capable(CAP_SYS_ADMIN))
|
|
if (perf_paranoid_cpu() && !capable(CAP_SYS_ADMIN))
|
|
return ERR_PTR(-EACCES);
|
|
return ERR_PTR(-EACCES);
|
|
|
|
|
|
- if (cpu < 0 || cpu >= nr_cpumask_bits)
|
|
|
|
- return ERR_PTR(-EINVAL);
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* We could be clever and allow to attach a event to an
|
|
* We could be clever and allow to attach a event to an
|
|
* offline CPU and activate it when the CPU comes up, but
|
|
* offline CPU and activate it when the CPU comes up, but
|
|
@@ -5541,6 +5538,11 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
|
|
struct hw_perf_event *hwc;
|
|
struct hw_perf_event *hwc;
|
|
long err;
|
|
long err;
|
|
|
|
|
|
|
|
+ if ((unsigned)cpu >= nr_cpu_ids) {
|
|
|
|
+ if (!task || cpu != -1)
|
|
|
|
+ return ERR_PTR(-EINVAL);
|
|
|
|
+ }
|
|
|
|
+
|
|
event = kzalloc(sizeof(*event), GFP_KERNEL);
|
|
event = kzalloc(sizeof(*event), GFP_KERNEL);
|
|
if (!event)
|
|
if (!event)
|
|
return ERR_PTR(-ENOMEM);
|
|
return ERR_PTR(-ENOMEM);
|
|
@@ -5589,7 +5591,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
|
|
|
|
|
|
if (!overflow_handler && parent_event)
|
|
if (!overflow_handler && parent_event)
|
|
overflow_handler = parent_event->overflow_handler;
|
|
overflow_handler = parent_event->overflow_handler;
|
|
-
|
|
|
|
|
|
+
|
|
event->overflow_handler = overflow_handler;
|
|
event->overflow_handler = overflow_handler;
|
|
|
|
|
|
if (attr->disabled)
|
|
if (attr->disabled)
|