Revert "perf: Use new infrastructure to fix deadlocks in execve"

This reverts commit a48cf1c921 which is
commit 6914303824bb572278568330d72fc1f8f9814e67 upstream.

It breaks the API and we don't need it right now in the 5.4 tree.

Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Icdb1a92d25a1cf06aa1627c727da715ee9aac49f
This commit is contained in:
Greg Kroah-Hartman 2020-10-01 18:31:07 +02:00
commit 098132cd89

View file

@ -1254,7 +1254,7 @@ static void put_ctx(struct perf_event_context *ctx)
* function.
*
* Lock order:
* exec_update_mutex
* cred_guard_mutex
* task_struct::perf_event_mutex
* perf_event_context::mutex
* perf_event::child_mutex;
@ -11037,14 +11037,14 @@ SYSCALL_DEFINE5(perf_event_open,
}
if (task) {
err = mutex_lock_interruptible(&task->signal->exec_update_mutex);
err = mutex_lock_interruptible(&task->signal->cred_guard_mutex);
if (err)
goto err_task;
/*
* Reuse ptrace permission checks for now.
*
* We must hold exec_update_mutex across this and any potential
* We must hold cred_guard_mutex across this and any potential
* perf_install_in_context() call for this new event to
* serialize against exec() altering our credentials (and the
* perf_event_exit_task() that could imply).
@ -11333,7 +11333,7 @@ SYSCALL_DEFINE5(perf_event_open,
mutex_unlock(&ctx->mutex);
if (task) {
mutex_unlock(&task->signal->exec_update_mutex);
mutex_unlock(&task->signal->cred_guard_mutex);
put_task_struct(task);
}
@ -11369,7 +11369,7 @@ err_alloc:
free_event(event);
err_cred:
if (task)
mutex_unlock(&task->signal->exec_update_mutex);
mutex_unlock(&task->signal->cred_guard_mutex);
err_task:
if (task)
put_task_struct(task);
@ -11674,7 +11674,7 @@ static void perf_event_exit_task_context(struct task_struct *child, int ctxn)
/*
* When a child task exits, feed back event values to parent events.
*
* Can be called with exec_update_mutex held when called from
* Can be called with cred_guard_mutex held when called from
* install_exec_creds().
*/
void perf_event_exit_task(struct task_struct *child)