From: Christian Brauner <christian.brauner@ubuntu.com> To: Christoph Hewllig <hch@infradead.org>, linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@linux-foundation.org>, linux-arch@vger.kernel.org Cc: Jonathan Corbet <corbet@lwn.net>, Yoshinori Sato <ysato@users.sourceforge.jp>, Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com>, Geert Uytterhoeven <geert@linux-m68k.org>, Ley Foon Tan <ley.foon.tan@intel.com>, "David S. Miller" <davem@davemloft.net>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, Arnd Bergmann <arnd@arndb.de>, Steven Rostedt <rostedt@goodmis.org>, Stafford Horne <shorne@gmail.com>, Peter Zijlstra <peterz@infradead.org>, Kars de Jong <jongk@linux-m68k.org>, Kees Cook <keescook@chromium.org>, Greentime Hu <green.hu@gmail.com>, "Eric W. Biederman" <ebiederm@xmission.com>, Mauro Carvalho Chehab <mchehab+huawei@kernel.org>, Alexandre Chartre <alexandre.chartre@oracle.com>, Masami Hiramatsu <mhiramat@kernel.org>, Tom Zanussi <zanussi@kernel.org>, Xiao Yang <yangx.jy@cn.fujitsu.com>, linux-doc@vger.kernel.org, uclinux-h8-devel@lists.sourceforge.jp, linux-ia64@vger.kernel.org, linux-m68k@lists.linux-m68k.org, sparclinux@vger.kernel.org, kgdb-bugreport@lists.sourceforge.net, linux-kselftest@vger.kernel.org, Christian Brauner <christian.brauner@ubuntu.com>, Ingo Molnar <mingo@kernel.org> Subject: [PATCH 01/11] fork: introduce kernel_clone() Date: Tue, 18 Aug 2020 19:34:01 +0200 [thread overview] Message-ID: <20200818173411.404104-2-christian.brauner@ubuntu.com> (raw) In-Reply-To: <20200818173411.404104-1-christian.brauner@ubuntu.com> The old _do_fork() helper doesn't follow naming conventions of in-kernel helpers for syscalls. The process creation cleanup in [1] didn't change the name to something more reasonable mainly because _do_fork() was used in quite a few places. So sending this as a separate series seemed the better strategy. This commit renames _do_fork() to kernel_clone() but keeps _do_fork() as a simple static inline wrapper around kernel_clone(). Follow-up patches will switch each caller of _do_fork() and each place where it is referenced over to kernel_clone(). After all these changes are done, we can remove _do_fork() completely and will only be left with kernel_clone(). [1]: 9ba27414f2ec ("Merge tag 'fork-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux") Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> --- include/linux/sched/task.h | 6 +++++- kernel/fork.c | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index a98965007eef..d9ef07359c96 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -83,7 +83,11 @@ extern void do_group_exit(int); extern void exit_files(struct task_struct *); extern void exit_itimers(struct signal_struct *); -extern long _do_fork(struct kernel_clone_args *kargs); +extern int kernel_clone(struct kernel_clone_args *kargs); +static inline long _do_fork(struct kernel_clone_args *kargs) +{ + return kernel_clone(kargs); +} struct task_struct *fork_idle(int); struct mm_struct *copy_init_mm(void); extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); diff --git a/kernel/fork.c b/kernel/fork.c index 4d32190861bd..34e37cee239f 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2384,7 +2384,7 @@ struct mm_struct *copy_init_mm(void) * * args->exit_signal is expected to be checked for sanity by the caller. */ -long _do_fork(struct kernel_clone_args *args) +int kernel_clone(struct kernel_clone_args *args) { u64 clone_flags = args->flags; struct completion vfork; @@ -2477,7 +2477,7 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) .stack_size = (unsigned long)arg, }; - return _do_fork(&args); + return kernel_clone(&args); } #ifdef __ARCH_WANT_SYS_FORK @@ -2488,7 +2488,7 @@ SYSCALL_DEFINE0(fork) .exit_signal = SIGCHLD, }; - return _do_fork(&args); + return kernel_clone(&args); #else /* can not support in nommu mode */ return -EINVAL; @@ -2504,7 +2504,7 @@ SYSCALL_DEFINE0(vfork) .exit_signal = SIGCHLD, }; - return _do_fork(&args); + return kernel_clone(&args); } #endif @@ -2542,7 +2542,7 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, .tls = tls, }; - return _do_fork(&args); + return kernel_clone(&args); } #endif @@ -2700,7 +2700,7 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size) if (!clone3_args_valid(&kargs)) return -EINVAL; - return _do_fork(&kargs); + return kernel_clone(&kargs); } #endif @@ -2863,7 +2863,7 @@ int unshare_fd(unsigned long unshare_flags, unsigned int max_fds, /* * unshare allows a process to 'unshare' part of the process * context which was originally shared using clone. copy_* - * functions used by _do_fork() cannot be used here directly + * functions used by kernel_clone() cannot be used here directly * because they modify an inactive task_struct that is being * constructed. Here we are modifying the current, active, * task_struct. -- 2.28.0
WARNING: multiple messages have this Message-ID (diff)
From: Christian Brauner <christian.brauner@ubuntu.com> To: Christoph Hewllig <hch@infradead.org>, linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@linux-foundation.org>, linux-arch@vger.kernel.org Cc: Jonathan Corbet <corbet@lwn.net>, Yoshinori Sato <ysato@users.sourceforge.jp>, Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com>, Geert Uytterhoeven <geert@linux-m68k.org>, Ley Foon Tan <ley.foon.tan@intel.com>, "David S. Miller" <davem@davemloft.net>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, Arnd Bergmann <arnd@arndb.de>, Steven Rostedt <rostedt@goodmis.org>, Stafford Horne <shorne@gmail.com>, Peter Zijlstra <peterz@infradead.org>, Kars de Jong <jongk@linux-m68k.org>, Kees Cook <keescook@chromium.org>, Greentime Hu <green.hu@gmail.com>, "Eric W. Biederman" <ebiederm@xmission.com>, Mauro Carvalho Chehab <mchehab+huawei@kernel.org>, Alexandre Chartre <alexandre.chartre@oracle.com>, Masami Hiramatsu <mhiramat@kernel.org>, Tom Zanussi <zanussi@kernel.org>, Xiao Yang <yangx.jy@cn.fujitsu.com>, linux-doc@vger.kernel.org, uclinux-h8-devel@lists.sourceforge.jp, linux-ia64@vger.kernel.org, linux-m68k@lists.linux-m68k.org, sparclinux@vger.kernel.org, kgdb-bugreport@lists.sourceforge.net, linux-kselftest@vger.kernel.org, Christian Brauner <christian.brauner@ubuntu.com>, Ingo Molnar <mingo@kernel.org> Subject: [PATCH 01/11] fork: introduce kernel_clone() Date: Tue, 18 Aug 2020 17:34:01 +0000 [thread overview] Message-ID: <20200818173411.404104-2-christian.brauner@ubuntu.com> (raw) In-Reply-To: <20200818173411.404104-1-christian.brauner@ubuntu.com> The old _do_fork() helper doesn't follow naming conventions of in-kernel helpers for syscalls. The process creation cleanup in [1] didn't change the name to something more reasonable mainly because _do_fork() was used in quite a few places. So sending this as a separate series seemed the better strategy. This commit renames _do_fork() to kernel_clone() but keeps _do_fork() as a simple static inline wrapper around kernel_clone(). Follow-up patches will switch each caller of _do_fork() and each place where it is referenced over to kernel_clone(). After all these changes are done, we can remove _do_fork() completely and will only be left with kernel_clone(). [1]: 9ba27414f2ec ("Merge tag 'fork-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux") Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> --- include/linux/sched/task.h | 6 +++++- kernel/fork.c | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index a98965007eef..d9ef07359c96 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -83,7 +83,11 @@ extern void do_group_exit(int); extern void exit_files(struct task_struct *); extern void exit_itimers(struct signal_struct *); -extern long _do_fork(struct kernel_clone_args *kargs); +extern int kernel_clone(struct kernel_clone_args *kargs); +static inline long _do_fork(struct kernel_clone_args *kargs) +{ + return kernel_clone(kargs); +} struct task_struct *fork_idle(int); struct mm_struct *copy_init_mm(void); extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); diff --git a/kernel/fork.c b/kernel/fork.c index 4d32190861bd..34e37cee239f 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2384,7 +2384,7 @@ struct mm_struct *copy_init_mm(void) * * args->exit_signal is expected to be checked for sanity by the caller. */ -long _do_fork(struct kernel_clone_args *args) +int kernel_clone(struct kernel_clone_args *args) { u64 clone_flags = args->flags; struct completion vfork; @@ -2477,7 +2477,7 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) .stack_size = (unsigned long)arg, }; - return _do_fork(&args); + return kernel_clone(&args); } #ifdef __ARCH_WANT_SYS_FORK @@ -2488,7 +2488,7 @@ SYSCALL_DEFINE0(fork) .exit_signal = SIGCHLD, }; - return _do_fork(&args); + return kernel_clone(&args); #else /* can not support in nommu mode */ return -EINVAL; @@ -2504,7 +2504,7 @@ SYSCALL_DEFINE0(vfork) .exit_signal = SIGCHLD, }; - return _do_fork(&args); + return kernel_clone(&args); } #endif @@ -2542,7 +2542,7 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, .tls = tls, }; - return _do_fork(&args); + return kernel_clone(&args); } #endif @@ -2700,7 +2700,7 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size) if (!clone3_args_valid(&kargs)) return -EINVAL; - return _do_fork(&kargs); + return kernel_clone(&kargs); } #endif @@ -2863,7 +2863,7 @@ int unshare_fd(unsigned long unshare_flags, unsigned int max_fds, /* * unshare allows a process to 'unshare' part of the process * context which was originally shared using clone. copy_* - * functions used by _do_fork() cannot be used here directly + * functions used by kernel_clone() cannot be used here directly * because they modify an inactive task_struct that is being * constructed. Here we are modifying the current, active, * task_struct. -- 2.28.0
next prev parent reply other threads:[~2020-08-18 17:34 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-18 17:34 [PATCH 00/11] Introduce kernel_clone(), kill _do_fork() Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` Christian Brauner [this message] 2020-08-18 17:34 ` [PATCH 01/11] fork: introduce kernel_clone() Christian Brauner 2020-08-18 17:34 ` [PATCH 02/11] h8300: switch to kernel_clone() Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 03/11] ia64: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 04/11] m68k: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-19 8:45 ` Geert Uytterhoeven 2020-08-19 8:45 ` Geert Uytterhoeven 2020-08-18 17:34 ` [PATCH 05/11] nios2: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 06/11] sparc: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 07/11] x86: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 08/11] kprobes: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 09/11] kgdbts: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 10/11] tracing: " Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:34 ` [PATCH 11/11] sched: remove _do_fork() Christian Brauner 2020-08-18 17:34 ` Christian Brauner 2020-08-18 17:44 ` [PATCH 00/11] Introduce kernel_clone(), kill _do_fork() Matthew Wilcox 2020-08-18 17:44 ` Matthew Wilcox 2020-08-18 17:57 ` Christian Brauner 2020-08-18 17:57 ` Christian Brauner 2020-08-19 7:43 ` peterz 2020-08-19 7:43 ` peterz 2020-08-19 8:45 ` Christian Brauner 2020-08-19 8:45 ` Christian Brauner 2020-08-19 11:18 ` Matthew Wilcox 2020-08-19 11:18 ` Matthew Wilcox 2020-08-19 13:32 ` Eric W. Biederman 2020-08-19 13:32 ` Eric W. Biederman 2020-08-19 13:46 ` Christian Brauner 2020-08-19 13:46 ` Christian Brauner 2020-08-19 15:01 ` Eric W. Biederman 2020-08-19 15:01 ` Eric W. Biederman 2020-08-19 15:41 ` David Laight 2020-08-19 15:41 ` David Laight 2020-08-19 15:45 ` Matthew Wilcox 2020-08-19 15:45 ` Matthew Wilcox 2020-08-19 15:55 ` David Laight 2020-08-19 15:55 ` David Laight 2020-08-19 16:24 ` Matthew Wilcox 2020-08-19 16:24 ` Matthew Wilcox
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200818173411.404104-2-christian.brauner@ubuntu.com \ --to=christian.brauner@ubuntu.com \ --cc=alexandre.chartre@oracle.com \ --cc=arnd@arndb.de \ --cc=bp@alien8.de \ --cc=corbet@lwn.net \ --cc=davem@davemloft.net \ --cc=ebiederm@xmission.com \ --cc=fenghua.yu@intel.com \ --cc=geert@linux-m68k.org \ --cc=green.hu@gmail.com \ --cc=hch@infradead.org \ --cc=jongk@linux-m68k.org \ --cc=keescook@chromium.org \ --cc=kgdb-bugreport@lists.sourceforge.net \ --cc=ley.foon.tan@intel.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-m68k@lists.linux-m68k.org \ --cc=mchehab+huawei@kernel.org \ --cc=mhiramat@kernel.org \ --cc=mingo@kernel.org \ --cc=mingo@redhat.com \ --cc=peterz@infradead.org \ --cc=rostedt@goodmis.org \ --cc=shorne@gmail.com \ --cc=sparclinux@vger.kernel.org \ --cc=tglx@linutronix.de \ --cc=tony.luck@intel.com \ --cc=torvalds@linux-foundation.org \ --cc=uclinux-h8-devel@lists.sourceforge.jp \ --cc=x86@kernel.org \ --cc=yangx.jy@cn.fujitsu.com \ --cc=ysato@users.sourceforge.jp \ --cc=zanussi@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.