All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.