Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp2428845ybi; Thu, 20 Jun 2019 15:10:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqyfd5sRJr/h1Gdg75/J9tKi9KeFkIkuTpbQvDLszLHDof9g2rJnN1fY8nH2xZlrnF4vhwuw X-Received: by 2002:a17:902:778d:: with SMTP id o13mr76779061pll.82.1561068634658; Thu, 20 Jun 2019 15:10:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561068634; cv=none; d=google.com; s=arc-20160816; b=K8rDwtntkymOIOiAcg+SvyvnWe7XNWsCwuqraIDycKHgCM7fthaInY4bHSc98vWaeA BiKBEvy0x73+A20Wgm5s7ap5eC7n23aQuGbw8X7tURIjzsNakksjyTAmwHJgyq4w1ZYA cb5lkRwm3OVZg6eUwYQZcljXkWUm5E65LkO1nd3qSOtp8IN8IJXm1HU2iZBUsyeWnc3p 2uJVhiDJLZVEdknKX/AOxtG6jBc/4tSu0wNeZLNRNqCIO5C7axaVo+jkf9qWFenGoWUS Wljf5acFdN6QG6c7XNd0biaopBk4AT8qeulb3QG1uzSyVOQowhnKUfCeXBiUo0F0rPka kQ5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=osQ4T6cHI9dS6FXTVEWB3XzgaXkhdOGQwr24b6JLCQo=; b=RM/oTiZwlL8d1l2KbuM6Rf85X0YtG9G+wigZvvEKnBEer6k0bx48f85oE+ZzXi5r8I gRME3efyNwHxbIKnQIwqfsoim1ciWXKGh5nIS5l8Im7yQcmf4naSdjPwoCdDDb/+YlNw TWbeb/Zgy0vmViSd379BUCx4Edd0bERyVrNGPJcfIGuZC2Mb1O24ZMOp72snJZImfpXD irIsc9NrRs6Mmle6NRn1CCfl3W4kM37tki+Riakxwd7LicsFhDn5D7Iuzysl8qxjprGK OSv2oIOcrJh9V6yiZtJai3MCEh6Zr78JUEv3XyI1J5u2mDlUPCTLx8ualrlPpEVhCNcD pfpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=JrwSrOMq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t15si823830pjr.46.2019.06.20.15.10.17; Thu, 20 Jun 2019 15:10:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=JrwSrOMq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726276AbfFTWKK (ORCPT + 99 others); Thu, 20 Jun 2019 18:10:10 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:44164 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726180AbfFTWKJ (ORCPT ); Thu, 20 Jun 2019 18:10:09 -0400 Received: by mail-wr1-f65.google.com with SMTP id r16so4530864wrl.11 for ; Thu, 20 Jun 2019 15:10:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brauner.io; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=osQ4T6cHI9dS6FXTVEWB3XzgaXkhdOGQwr24b6JLCQo=; b=JrwSrOMqW6pdRX/MfVgjguikzmfB2AM5MTvWAoZcvSUV87L4iAhtFu+vVuAqerIFG4 YD9OJqiT5a56xrSyv71I38B7Pt5v8iOQBMdMXLsI79lqkTCWEo02Nt3jtnKh6SFsB8EG KuskCykxLQkQ992OrO59yi9LtmL0VofckfHvmHr884smqufwyRlaXXm9j8pdtXC9r28x h0uOIb32beFoOYUiZXETw8u7Ae6wChqgCX+7DmXEqpT8lijAMIvdTF2di9x9b9HBBMZP PYkSFbcucR2Ilsh9OAOcuzv4cVW/xib12ot2hwFaQJYq1bpQZJaCoifkFff68L1p/Xsc hQGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=osQ4T6cHI9dS6FXTVEWB3XzgaXkhdOGQwr24b6JLCQo=; b=O3ThBmfsOvwnrYSC/Rox6PWvHBv9hnIQRRgbt/OxVw9l4gIFquVgM8vYoF0gC+xlhc tT1dztFr6mJkI00KnE+P0Wj0O8LnWyb97nuTIilAohKnEfQU8+FH3u3subfHkPQ0+9J9 WgJq7FXpxzT3matrESYWSMc7KEwAED3yqsUNaXhJbTmFuqUH+jNwF8IwzbnldkIkt40z v4Aepf2Ddj48OMA6gaiSCU2fUf4V1/N6NvVlDygHZV0G84TKMJIwYdPvOkHQi+83zvuV +so5MbKunjie9c/uYF19zs2ORhbaqmYkcYEy9/gTGN/OPm54VORS4gDJY97gByQwJ0VD gDDw== X-Gm-Message-State: APjAAAVO8M5BtJTy9UXQLCtvqzyWI3p2YB/pgKH8FZJy0uGp+Kpc9SB4 fjubdsNfWlMhX5ZAyYTM71H6sg== X-Received: by 2002:adf:ec8e:: with SMTP id z14mr8010601wrn.125.1561068606919; Thu, 20 Jun 2019 15:10:06 -0700 (PDT) Received: from brauner.io ([212.91.227.56]) by smtp.gmail.com with ESMTPSA id x129sm525212wmg.44.2019.06.20.15.10.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 20 Jun 2019 15:10:06 -0700 (PDT) Date: Fri, 21 Jun 2019 00:10:04 +0200 From: Christian Brauner To: Guenter Roeck Cc: viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, jannh@google.com, keescook@chromium.org, fweimer@redhat.com, oleg@redhat.com, arnd@arndb.de, dhowells@redhat.com, Andrew Morton , Adrian Reber , linux-api@vger.kernel.org, linux-arch@vger.kernel.org, x86@kernel.org Subject: Re: [PATCH v3 2/2] arch: wire-up clone3() syscall Message-ID: <20190620221003.ciuov5fzqxrcaykp@brauner.io> References: <20190604160944.4058-1-christian@brauner.io> <20190604160944.4058-2-christian@brauner.io> <20190620184451.GA28543@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20190620184451.GA28543@roeck-us.net> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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: > > Wire up the clone3() call on all arches that don't require hand-rolled > > assembly. > > > > Some of the arches look like they need special assembly massaging and it is > > probably smarter if the appropriate arch maintainers would do the actual > > wiring. Arches that are wired-up are: > > - x86{_32,64} > > - arm{64} > > - xtensa > > > > This patch results in build failures on various architecetures. > > h8300-linux-ld: arch/h8300/kernel/syscalls.o:(.data+0x6d0): undefined reference to `sys_clone3' > > nios2-linux-ld: arch/nios2/kernel/syscall_table.o:(.data+0x6d0): undefined reference to `sys_clone3' > > There may be others; -next is in too bad shape right now to get a complete > picture. Wondering, though: What is special with this syscall ? Normally > one would only get a warning that a syscall is not wired up. 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 /* * Unimplemented (or alternatively implemented) syscalls diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h index 24480c2d95da..e4e0523102e2 100644 --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -48,6 +48,7 @@ #endif #define __ARCH_WANT_SYS_CLONE +#define __ARCH_WANT_SYS_CLONE3 #ifndef __COMPAT_SYSCALL_NR #include diff --git a/arch/x86/include/asm/unistd.h b/arch/x86/include/asm/unistd.h index 146859efd83c..097589753fec 100644 --- a/arch/x86/include/asm/unistd.h +++ b/arch/x86/include/asm/unistd.h @@ -54,5 +54,6 @@ # define __ARCH_WANT_SYS_FORK # define __ARCH_WANT_SYS_VFORK # define __ARCH_WANT_SYS_CLONE +# define __ARCH_WANT_SYS_CLONE3 #endif /* _ASM_X86_UNISTD_H */ diff --git a/arch/xtensa/include/asm/unistd.h b/arch/xtensa/include/asm/unistd.h index 30af4dc3ce7b..b52236245e51 100644 --- a/arch/xtensa/include/asm/unistd.h +++ b/arch/xtensa/include/asm/unistd.h @@ -3,6 +3,7 @@ #define _XTENSA_UNISTD_H #define __ARCH_WANT_SYS_CLONE +#define __ARCH_WANT_SYS_CLONE3 #include #define __ARCH_WANT_NEW_STAT diff --git a/kernel/fork.c b/kernel/fork.c index 08ff131f26b4..98abea995629 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2490,7 +2490,9 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, return _do_fork(&args); } +#endif +#ifdef __ARCH_WANT_SYS_CLONE3 noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs, struct clone_args __user *uargs, size_t size) diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 4d9ae5ea6caf..34b76895b81e 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -137,6 +137,8 @@ COND_SYSCALL(capset); /* kernel/exit.c */ /* kernel/fork.c */ +/* __ARCH_WANT_SYS_CLONE3 */ +COND_SYSCALL(clone3); /* kernel/futex.c */ COND_SYSCALL(futex);