On Fri, Jun 21, 2019 at 12:10 AM Christian Brauner <christian@xxxxxxxxxx> wrote: > On Thu, Jun 20, 2019 at 11:44:51AM -0700, Guenter Roeck wrote: > > On Tue, Jun 04, 2019 at 06:09:44PM +0200, Christian Brauner wrote: > > clone3() was placed under __ARCH_WANT_SYS_CLONE. Most architectures > simply define __ARCH_WANT_SYS_CLONE and are done with it. > Some however, such as nios2 and h8300 don't define it but instead > provide a sys_clone stub of their own because of architectural > requirements (or tweaks) and they are mostly written in assembly. (That > should be left to arch maintainers for sys_clone3.) > > The build failures were on my radar already. I hadn't yet replied > since I haven't pushed the fixup below. > The solution is to define __ARCH_WANT_SYS_CLONE3 and add a > cond_syscall(clone3) so we catch all architectures that do not yet > provide clone3 with a ENOSYS until maintainers have added it. > > diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h > index 7a39e77984ef..aa35aa5d68dc 100644 > --- a/arch/arm/include/asm/unistd.h > +++ b/arch/arm/include/asm/unistd.h > @@ -40,6 +40,7 @@ > #define __ARCH_WANT_SYS_FORK > #define __ARCH_WANT_SYS_VFORK > #define __ARCH_WANT_SYS_CLONE > +#define __ARCH_WANT_SYS_CLONE3 I never really liked having __ARCH_WANT_SYS_CLONE here because it was the only one that a new architecture needed to set: all the other __ARCH_WANT_* are for system calls that are already superseded by newer ones, so a new architecture would start out with an empty list. Since __ARCH_WANT_SYS_CLONE3 replaces __ARCH_WANT_SYS_CLONE for new architectures, how about leaving __ARCH_WANT_SYS_CLONE untouched but instead coming up with the reverse for clone3 and mark the architectures that specifically don't want it (if any)? Arnd