perf events: Clean up pid passing
authorMatt Helsley <matthltc@us.ibm.com>
Mon, 13 Sep 2010 20:01:20 +0000 (13:01 -0700)
committerIngo Molnar <mingo@elte.hu>
Wed, 15 Sep 2010 08:44:00 +0000 (10:44 +0200)
commit38a81da2205f94e8a2a834b51a6b99c91fc7c2e8
tree5227c665f37d1c472608a44aaad0a04be68befb2
parent2ebd4ffb6d0cb877787b1e42be8485820158857e
perf events: Clean up pid passing

The kernel perf event creation path shouldn't use find_task_by_vpid()
because a vpid exists in a specific namespace. find_task_by_vpid() uses
current's pid namespace which isn't always the correct namespace to use
for the vpid in all the places perf_event_create_kernel_counter() (and
thus find_get_context()) is called.

The goal is to clean up pid namespace handling and prevent bugs like:

https://bugzilla.kernel.org/show_bug.cgi?id=17281

Instead of using pids switch find_get_context() to use task struct
pointers directly. The syscall is responsible for resolving the pid to
a task struct. This moves the pid namespace resolution into the syscall
much like every other syscall that takes pid parameters.

Signed-off-by: Matt Helsley <matthltc@us.ibm.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robin Green <greenrd@greenrd.org>
Cc: Prasad <prasad@linux.vnet.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
LKML-Reference: <a134e5e392ab0204961fd1a62c84a222bf5874a9.1284407763.git.matthltc@us.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/arm/oprofile/common.c
include/linux/perf_event.h
kernel/hw_breakpoint.c
kernel/perf_event.c
kernel/watchdog.c