perf fix
Linus,
Please pull the latest perf-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-urgent-for-linus
# HEAD: 64aee2a965cf2954a038b5522f11d2cd2f0f8f3e perf/core: Fix group {cpu,task} validation
A single fix to not allow nonsensical event groups that result in kernel warnings.
Thanks,
Ingo
------------------>
Mark Rutland (1):
perf/core: Fix group {cpu,task} validation
kernel/events/core.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-)
kernel/events/core.c +19 -20
@@ -10032,28 +10032,27 @@ SYSCALL_DEFINE5(perf_event_open, goto err_context;/* -* Do not allow to attach to a group in a different -* task or CPU context: +* Make sure we're both events for the same CPU; +* grouping events for different CPUs is broken; since +* you can never concurrently schedule them anyhow. */ -if (move_group) { -/* -* Make sure we're both on the same task, or both -* per-cpu events. -*/ -if (group_leader->ctx->task != ctx->task) - goto err_context; +if (group_leader->cpu != event->cpu) + goto err_context; -/* -* Make sure we're both events for the same CPU; -* grouping events for different CPUs is broken; since -* you can never concurrently schedule them anyhow. -*/ -if (group_leader->cpu != event->cpu) - goto err_context; - }else { -if (group_leader->ctx != ctx) - goto err_context; - } +/* +* Make sure we're both on the same task, or both +* per-CPU events. +*/ +if (group_leader->ctx->task != ctx->task) + goto err_context; + +/* +* Do not allow to attach to a group in a different task +* or CPU context. If we're moving SW events, we'll fix +* this up later, so allow that. +*/ +if (!move_group && group_leader->ctx != ctx) + goto err_context;/* * Only a group leader can be exclusive or pinned