Loading kernel/events/core.c +19 −4 Original line number Diff line number Diff line Loading @@ -1031,7 +1031,7 @@ perf_cgroup_set_timestamp(struct task_struct *task, { } void static inline void perf_cgroup_switch(struct task_struct *task, struct task_struct *next) { } Loading Loading @@ -10609,6 +10609,15 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, goto err_ns; } /* * Disallow uncore-cgroup events, they don't make sense as the cgroup will * be different on other CPUs in the uncore mask. */ if (pmu->task_ctx_nr == perf_invalid_context && cgroup_fd != -1) { err = -EINVAL; goto err_pmu; } if (event->attr.aux_output && !(pmu->capabilities & PERF_PMU_CAP_AUX_OUTPUT)) { err = -EOPNOTSUPP; Loading Loading @@ -11416,8 +11425,11 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr, int cpu, int err; /* * Get the target context (task or percpu): * Grouping is not supported for kernel events, neither is 'AUX', * make sure the caller's intentions are adjusted. */ if (attr->aux_output) return ERR_PTR(-EINVAL); event = perf_event_alloc(attr, cpu, task, NULL, NULL, overflow_handler, context, -1); Loading @@ -11429,6 +11441,9 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr, int cpu, /* Mark owner so we could distinguish it from user events. */ event->owner = TASK_TOMBSTONE; /* * Get the target context (task or percpu): */ ctx = find_get_context(event->pmu, task, event); if (IS_ERR(ctx)) { err = PTR_ERR(ctx); Loading Loading @@ -11880,7 +11895,7 @@ inherit_event(struct perf_event *parent_event, GFP_KERNEL); if (!child_ctx->task_ctx_data) { free_event(child_event); return NULL; return ERR_PTR(-ENOMEM); } } Loading Loading @@ -11983,7 +11998,7 @@ static int inherit_group(struct perf_event *parent_event, if (IS_ERR(child_ctr)) return PTR_ERR(child_ctr); if (sub->aux_event == parent_event && if (sub->aux_event == parent_event && child_ctr && !perf_get_aux_event(child_ctr, leader)) return -EINVAL; } Loading Loading
kernel/events/core.c +19 −4 Original line number Diff line number Diff line Loading @@ -1031,7 +1031,7 @@ perf_cgroup_set_timestamp(struct task_struct *task, { } void static inline void perf_cgroup_switch(struct task_struct *task, struct task_struct *next) { } Loading Loading @@ -10609,6 +10609,15 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, goto err_ns; } /* * Disallow uncore-cgroup events, they don't make sense as the cgroup will * be different on other CPUs in the uncore mask. */ if (pmu->task_ctx_nr == perf_invalid_context && cgroup_fd != -1) { err = -EINVAL; goto err_pmu; } if (event->attr.aux_output && !(pmu->capabilities & PERF_PMU_CAP_AUX_OUTPUT)) { err = -EOPNOTSUPP; Loading Loading @@ -11416,8 +11425,11 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr, int cpu, int err; /* * Get the target context (task or percpu): * Grouping is not supported for kernel events, neither is 'AUX', * make sure the caller's intentions are adjusted. */ if (attr->aux_output) return ERR_PTR(-EINVAL); event = perf_event_alloc(attr, cpu, task, NULL, NULL, overflow_handler, context, -1); Loading @@ -11429,6 +11441,9 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr, int cpu, /* Mark owner so we could distinguish it from user events. */ event->owner = TASK_TOMBSTONE; /* * Get the target context (task or percpu): */ ctx = find_get_context(event->pmu, task, event); if (IS_ERR(ctx)) { err = PTR_ERR(ctx); Loading Loading @@ -11880,7 +11895,7 @@ inherit_event(struct perf_event *parent_event, GFP_KERNEL); if (!child_ctx->task_ctx_data) { free_event(child_event); return NULL; return ERR_PTR(-ENOMEM); } } Loading Loading @@ -11983,7 +11998,7 @@ static int inherit_group(struct perf_event *parent_event, if (IS_ERR(child_ctr)) return PTR_ERR(child_ctr); if (sub->aux_event == parent_event && if (sub->aux_event == parent_event && child_ctr && !perf_get_aux_event(child_ctr, leader)) return -EINVAL; } Loading