diff options
| author | Peter Zijlstra <peterz@infradead.org> | 2017-03-16 08:47:50 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2017-03-16 09:16:53 -0400 |
| commit | 15121c789e001168decac6483d192bdb7ea29e74 (patch) | |
| tree | 80bc185614be7980c6f7ed9a0d1c1e0f13572ec6 | |
| parent | e7cc4865f0f31698ef2f7aac01a50e78968985b7 (diff) | |
perf/core: Simplify perf_event_free_task()
We have ctx->event_list that contains all events; no need to
repeatedly iterate the group lists to find them all.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: fweisbec@gmail.com
Link: http://lkml.kernel.org/r/20170316125823.239678244@infradead.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
| -rw-r--r-- | kernel/events/core.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index fc7c9a85944d..5f21e5e09ba4 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
| @@ -10426,21 +10426,11 @@ void perf_event_free_task(struct task_struct *task) | |||
| 10426 | WRITE_ONCE(ctx->task, TASK_TOMBSTONE); | 10426 | WRITE_ONCE(ctx->task, TASK_TOMBSTONE); |
| 10427 | put_task_struct(task); /* cannot be last */ | 10427 | put_task_struct(task); /* cannot be last */ |
| 10428 | raw_spin_unlock_irq(&ctx->lock); | 10428 | raw_spin_unlock_irq(&ctx->lock); |
| 10429 | again: | ||
| 10430 | list_for_each_entry_safe(event, tmp, &ctx->pinned_groups, | ||
| 10431 | group_entry) | ||
| 10432 | perf_free_event(event, ctx); | ||
| 10433 | 10429 | ||
| 10434 | list_for_each_entry_safe(event, tmp, &ctx->flexible_groups, | 10430 | list_for_each_entry_safe(event, tmp, &ctx->event_list, event_entry) |
| 10435 | group_entry) | ||
| 10436 | perf_free_event(event, ctx); | 10431 | perf_free_event(event, ctx); |
| 10437 | 10432 | ||
| 10438 | if (!list_empty(&ctx->pinned_groups) || | ||
| 10439 | !list_empty(&ctx->flexible_groups)) | ||
| 10440 | goto again; | ||
| 10441 | |||
| 10442 | mutex_unlock(&ctx->mutex); | 10433 | mutex_unlock(&ctx->mutex); |
| 10443 | |||
| 10444 | put_ctx(ctx); | 10434 | put_ctx(ctx); |
| 10445 | } | 10435 | } |
| 10446 | } | 10436 | } |
