• M
    perf events: Clean up pid passing · 38a81da2
    Matt Helsley 提交于
    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: NMatt Helsley <matthltc@us.ibm.com>
    Signed-off-by: NPeter 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: NIngo Molnar <mingo@elte.hu>
    38a81da2
perf_event.c 141.1 KB