perf_events: Fix invalid pointer when pid is invalid
This patch fixes an error in perf_event_open() when the pid provided by the user is invalid. find_lively_task_by_vpid() does not return NULL on error but an error code. Without the fix the error code was silently passed to find_get_context() which would eventually cause a invalid pointer dereference. Signed-off-by: Stephane Eranian <eranian@google.com> Cc: peterz@infradead.org Cc: paulus@samba.org Cc: davem@davemloft.net Cc: fweisbec@gmail.com Cc: perfmon2-devel@lists.sf.net Cc: eranian@gmail.com Cc: robert.richter@amd.com LKML-Reference: <4ca9a5d1.e8e9d80a.3dbb.ffff8f2e@mx.google.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
d6dad199a1
Коммит
540804b5c5
|
@ -5616,8 +5616,13 @@ SYSCALL_DEFINE5(perf_event_open,
|
|||
}
|
||||
}
|
||||
|
||||
if (pid != -1)
|
||||
if (pid != -1) {
|
||||
task = find_lively_task_by_vpid(pid);
|
||||
if (IS_ERR(task)) {
|
||||
err = PTR_ERR(task);
|
||||
goto err_group_fd;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the target context (task or percpu):
|
||||
|
|
Загрузка…
Ссылка в новой задаче