mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
rseq: Eliminate useless task_work on execve
Eliminate a useless task_work on execve by moving the call to rseq_set_notify_resume() from sched_mm_cid_after_execve() to the error path of bprm_execve(). The call to rseq_set_notify_resume() from sched_mm_cid_after_execve() is pointless in the success case, because rseq_execve() will clear the rseq pointer before returning to userspace. sched_mm_cid_after_execve() is called from both the success and error paths of bprm_execve(). The call to rseq_set_notify_resume() is needed on error because the mm_cid may have changed. Also move the rseq_execve() to right after sched_mm_cid_after_execve() in bprm_execve(). [ mingo: Merged to a recent upstream kernel, extended the changelog. ] Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20250327132945.1558783-1-mathieu.desnoyers@efficios.com
This commit is contained in:
parent
975776841e
commit
169eae7711
@ -1864,9 +1864,9 @@ static int bprm_execve(struct linux_binprm *bprm)
|
||||
goto out;
|
||||
|
||||
sched_mm_cid_after_execve(current);
|
||||
rseq_execve(current);
|
||||
/* execve succeeded */
|
||||
current->in_execve = 0;
|
||||
rseq_execve(current);
|
||||
user_events_execve(current);
|
||||
acct_update_integrals(current);
|
||||
task_numa_free(current, false);
|
||||
@ -1883,6 +1883,7 @@ out:
|
||||
force_fatal_sig(SIGSEGV);
|
||||
|
||||
sched_mm_cid_after_execve(current);
|
||||
rseq_set_notify_resume(current);
|
||||
current->in_execve = 0;
|
||||
|
||||
return retval;
|
||||
|
@ -10703,7 +10703,6 @@ void sched_mm_cid_after_execve(struct task_struct *t)
|
||||
smp_mb();
|
||||
t->last_mm_cid = t->mm_cid = mm_cid_get(rq, t, mm);
|
||||
}
|
||||
rseq_set_notify_resume(t);
|
||||
}
|
||||
|
||||
void sched_mm_cid_fork(struct task_struct *t)
|
||||
|
Loading…
x
Reference in New Issue
Block a user