[RFC PATCH 07/24] fork: expose vfork completion helper
Li Chen <[email protected]> Thu, 16 Jul 2026 22:31:33 +0800
| Newsgroups | org.kernel.vger.audit,org.kernel.vger.linux-api,org.kernel.vger.linux-arch,org.kernel.vger.linux-doc,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest,org.kernel.vger.linux-security-module,org.kvack.linux-mm |
|---|---|
| Message-ID | <daf1064397a3f3ccd11f65f07683edf493e4a435.1784204592.git.me@linux.beauty> |
Allow process builders that call copy_process() directly to attach and wait for the existing vfork completion without duplicating its signal and task-reference handling. Assisted-by: Codex:gpt-5.6-sol Signed-off-by: Li Chen <[email protected]> --- include/linux/sched/task.h | 3 +++ kernel/fork.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index e0c1ca8c6a188..92b4e3bc31e66 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -14,6 +14,7 @@ struct task_struct; struct rusage; +struct completion; union thread_union; struct css_set; @@ -99,6 +100,8 @@ extern void exit_itimers(struct task_struct *); extern pid_t kernel_clone(struct kernel_clone_args *kargs); struct task_struct *copy_process(struct pid *pid, int trace, int node, struct kernel_clone_args *args); +int wait_for_vfork_done(struct task_struct *child, + struct completion *vfork); struct task_struct *create_io_thread(int (*fn)(void *), void *arg, int node); struct task_struct *fork_idle(int); extern pid_t kernel_thread(int (*fn)(void *), void *arg, const char *name, diff --git a/kernel/fork.c b/kernel/fork.c index f3f378a85be4c..970810a01bbf6 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1435,8 +1435,7 @@ static void complete_vfork_done(struct task_struct *tsk) task_unlock(tsk); } -static int wait_for_vfork_done(struct task_struct *child, - struct completion *vfork) +int wait_for_vfork_done(struct task_struct *child, struct completion *vfork) { unsigned int state = TASK_KILLABLE|TASK_FREEZABLE; int killed; -- 2.52.0