All of lore.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Matthew Wilcox <willy@infradead.org>
Cc: Christian Brauner <christian.brauner@ubuntu.com>,
	peterz@infradead.org, Christoph Hewllig <hch@infradead.org>,
	linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-arch@vger.kernel.org, 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>,
	Kars de Jong <jongk@linux-m68k.org>,
	Kees Cook <keescook@chromium.org>,
	Greentime Hu <green.hu@gmail.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
Subject: Re: [PATCH 00/11] Introduce kernel_clone(), kill _do_fork()
Date: Wed, 19 Aug 2020 08:32:59 -0500	[thread overview]
Message-ID: <87a6yq222c.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <20200819111851.GY17456@casper.infradead.org> (Matthew Wilcox's message of "Wed, 19 Aug 2020 12:18:51 +0100")

Matthew Wilcox <willy@infradead.org> writes:

> On Wed, Aug 19, 2020 at 10:45:56AM +0200, Christian Brauner wrote:
>> On Wed, Aug 19, 2020 at 09:43:40AM +0200, peterz@infradead.org wrote:
>> > On Tue, Aug 18, 2020 at 06:44:47PM +0100, Matthew Wilcox wrote:
>> > > On Tue, Aug 18, 2020 at 07:34:00PM +0200, Christian Brauner wrote:
>> > > > The only remaining function callable outside of kernel/fork.c is
>> > > > _do_fork(). It doesn't really follow the naming of kernel-internal
>> > > > syscall helpers as Christoph righly pointed out. Switch all callers and
>> > > > references to kernel_clone() and remove _do_fork() once and for all.
>> > > 
>> > > My only concern is around return type.  long, int, pid_t ... can we
>> > > choose one and stick to it?  pid_t is probably the right return type
>> > > within the kernel, despite the return type of clone3().  It'll save us
>> > > some work if we ever go through the hassle of growing pid_t beyond 31-bit.
>> > 
>> > We have at least the futex ABI restricting PID space to 30 bits.
>> 
>> Ok, looking into kernel/futex.c I see 
>> 
>> pid_t pid = uval & FUTEX_TID_MASK;
>> 
>> which is probably what this referes to and /proc/sys/kernel/threads-max
>> is restricted to FUTEX_TID_MASK.
>> 
>> Afaict, that doesn't block switching kernel_clone() to return pid_t. It
>> can't create anything > FUTEX_TID_MASK anyway without yelling EAGAIN at
>> userspace. But it means that _if_ we were to change the size of pid_t
>> we'd likely need a new futex API. 
>
> Yes, there would be a lot of work to do to increase the size of pid_t.
> I'd just like to not do anything to make that harder _now_.  Stick to
> using pid_t within the kernel.

Just so people are aware.  If you look in include/linux/threads.h you
can see that the maximum value of PID_MAX_LIMIT limits pids to 22 bits.

Further the design decisions of pids keeps us densly using pids.  So I
expect it will be a while before we even come close to using 30 bits of
pid space.

At the same time I do agree that it makes sense to use a consistent type
in the kernel to make it easier to read and update the code.

Eric

WARNING: multiple messages have this Message-ID (diff)
From: ebiederm@xmission.com (Eric W. Biederman)
To: Matthew Wilcox <willy@infradead.org>
Cc: Christian Brauner <christian.brauner@ubuntu.com>,
	peterz@infradead.org, Christoph Hewllig <hch@infradead.org>,
	linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-arch@vger.kernel.org, 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>,
	Kars de Jong <jongk@linux-m68k.org>,
	Kees Cook <keescook@chromium.org>,
	Greentime Hu <green.hu@gmail.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
Subject: Re: [PATCH 00/11] Introduce kernel_clone(), kill _do_fork()
Date: Wed, 19 Aug 2020 13:32:59 +0000	[thread overview]
Message-ID: <87a6yq222c.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <20200819111851.GY17456@casper.infradead.org> (Matthew Wilcox's message of "Wed, 19 Aug 2020 12:18:51 +0100")

Matthew Wilcox <willy@infradead.org> writes:

> On Wed, Aug 19, 2020 at 10:45:56AM +0200, Christian Brauner wrote:
>> On Wed, Aug 19, 2020 at 09:43:40AM +0200, peterz@infradead.org wrote:
>> > On Tue, Aug 18, 2020 at 06:44:47PM +0100, Matthew Wilcox wrote:
>> > > On Tue, Aug 18, 2020 at 07:34:00PM +0200, Christian Brauner wrote:
>> > > > The only remaining function callable outside of kernel/fork.c is
>> > > > _do_fork(). It doesn't really follow the naming of kernel-internal
>> > > > syscall helpers as Christoph righly pointed out. Switch all callers and
>> > > > references to kernel_clone() and remove _do_fork() once and for all.
>> > > 
>> > > My only concern is around return type.  long, int, pid_t ... can we
>> > > choose one and stick to it?  pid_t is probably the right return type
>> > > within the kernel, despite the return type of clone3().  It'll save us
>> > > some work if we ever go through the hassle of growing pid_t beyond 31-bit.
>> > 
>> > We have at least the futex ABI restricting PID space to 30 bits.
>> 
>> Ok, looking into kernel/futex.c I see 
>> 
>> pid_t pid = uval & FUTEX_TID_MASK;
>> 
>> which is probably what this referes to and /proc/sys/kernel/threads-max
>> is restricted to FUTEX_TID_MASK.
>> 
>> Afaict, that doesn't block switching kernel_clone() to return pid_t. It
>> can't create anything > FUTEX_TID_MASK anyway without yelling EAGAIN at
>> userspace. But it means that _if_ we were to change the size of pid_t
>> we'd likely need a new futex API. 
>
> Yes, there would be a lot of work to do to increase the size of pid_t.
> I'd just like to not do anything to make that harder _now_.  Stick to
> using pid_t within the kernel.

Just so people are aware.  If you look in include/linux/threads.h you
can see that the maximum value of PID_MAX_LIMIT limits pids to 22 bits.

Further the design decisions of pids keeps us densly using pids.  So I
expect it will be a while before we even come close to using 30 bits of
pid space.

At the same time I do agree that it makes sense to use a consistent type
in the kernel to make it easier to read and update the code.

Eric

  reply	other threads:[~2020-08-19 13:36 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 ` [PATCH 01/11] fork: introduce kernel_clone() Christian Brauner
2020-08-18 17:34   ` 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 [this message]
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=87a6yq222c.fsf@x220.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=alexandre.chartre@oracle.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=christian.brauner@ubuntu.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --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@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=willy@infradead.org \
    --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.