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
next prev parent reply other threads:[~2020-08-19 13:37 UTC|newest]
Thread overview: 25+ 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 ` [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 ` [PATCH 03/11] ia64: " Christian Brauner
2020-08-18 17:34 ` [PATCH 04/11] m68k: " Christian Brauner
2020-08-19 8:45 ` Geert Uytterhoeven
2020-08-18 17:34 ` [PATCH 05/11] nios2: " Christian Brauner
2020-08-18 17:34 ` [PATCH 06/11] sparc: " Christian Brauner
2020-08-18 17:34 ` [PATCH 07/11] x86: " Christian Brauner
2020-08-18 17:34 ` [PATCH 08/11] kprobes: " Christian Brauner
2020-08-18 17:34 ` [PATCH 09/11] kgdbts: " Christian Brauner
2020-08-18 17:34 ` [PATCH 10/11] tracing: " Christian Brauner
2020-08-18 17:34 ` [PATCH 11/11] sched: remove _do_fork() Christian Brauner
2020-08-18 17:44 ` [PATCH 00/11] Introduce kernel_clone(), kill _do_fork() Matthew Wilcox
2020-08-18 17:57 ` Christian Brauner
2020-08-19 7:43 ` peterz
2020-08-19 8:45 ` Christian Brauner
2020-08-19 11:18 ` Matthew Wilcox
2020-08-19 13:32 ` Eric W. Biederman [this message]
2020-08-19 13:46 ` Christian Brauner
2020-08-19 15:01 ` Eric W. Biederman
2020-08-19 15:41 ` David Laight
2020-08-19 15:45 ` Matthew Wilcox
2020-08-19 15:55 ` David Laight
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).