summaryrefslogtreecommitdiffstats
path: root/kernel/events
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/events')
-rw-r--r--kernel/events/core.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 6ee1febdf6ff..02c8421f8c01 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -903,17 +903,14 @@ list_update_cgroup_event(struct perf_event *event,
903 */ 903 */
904 cpuctx = __get_cpu_context(ctx); 904 cpuctx = __get_cpu_context(ctx);
905 905
906 /* Only set/clear cpuctx->cgrp if current task uses event->cgrp. */ 906 /*
907 if (perf_cgroup_from_task(current, ctx) != event->cgrp) { 907 * cpuctx->cgrp is NULL until a cgroup event is sched in or
908 /* 908 * ctx->nr_cgroup == 0 .
909 * We are removing the last cpu event in this context. 909 */
910 * If that event is not active in this cpu, cpuctx->cgrp 910 if (add && perf_cgroup_from_task(current, ctx) == event->cgrp)
911 * should've been cleared by perf_cgroup_switch. 911 cpuctx->cgrp = event->cgrp;
912 */ 912 else if (!add)
913 WARN_ON_ONCE(!add && cpuctx->cgrp); 913 cpuctx->cgrp = NULL;
914 return;
915 }
916 cpuctx->cgrp = add ? event->cgrp : NULL;
917} 914}
918 915
919#else /* !CONFIG_CGROUP_PERF */ 916#else /* !CONFIG_CGROUP_PERF */