Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1781805ybl; Thu, 19 Dec 2019 02:58:08 -0800 (PST) X-Google-Smtp-Source: APXvYqyhesNaXNI3pDaioOdN5+CobgKVVeHuffuujen9lST4ZugMNb376sUGgPoUq70/umwNpU0V X-Received: by 2002:a9d:74c4:: with SMTP id a4mr8331247otl.119.1576753088848; Thu, 19 Dec 2019 02:58:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576753088; cv=none; d=google.com; s=arc-20160816; b=SPRD9CrsnkW41YAM2N206J5zOpjJKCkF4DFB0T6uKQ+BxHX6JIOBIUBoSGMLVxdjtb c3rb0+O5zy9AjKyAaA7G64IytiMpA1623JfPON8HQZv3PJoii2JCAhGV5opmdAw8x4A2 1aUq26fe/CBZa+Gz/SCQdxSbGYThmE6wG27z+/44zPuYNrPeqSHNx16OVBqnOretLf5C Npv1b5O7Ylm6gX/6ig73fxDxGHdkNZBIxTTjwTJfoRDDSvJr/DOZ5Pvyv/ReaSO8xT70 u5LQc2Pw/k9+O65Qrx3GwxWMnyN4bkvjCS2jNFfzfnn2jiVwSWJnXx0EqV9mnz1+LPNw QTRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=FEPZe9j1wgRF1oW7TrLXdaM3j/hsHPAXuvBR89TzR3E=; b=0w9X7AAwTd0rckaaWTNvCA+xjj05DS2dJT2DiEhDcV3iOtVVLo2V1Px6MAMbrn3qM6 beuFO74E5mPguDYoAgUcfXhlEUxx7yAgNXuEHCt2O0Won82nuxoCZLL3AqcRgOHlvD1O Y9g4V2G58Ykjoa67NKOkPLkOd+QJ9SFtl8PMGMuXTrkBIfwFcZ/eUnTdRYkIrshgDVKC Hu329jbXoU9FCetTwAfx/ORtgk1Q/xw7wkRg/1lPFt1TflLDhJsUvUW31Z0DiSAPTkOb gU9t47H0VlJ+esxw4bocElIRz9uVV8KFnYsvqsueG2NvsETI7TdMzn+7gp/5du7IdUK9 WDow== ARC-Authentication-Results: i=1; mx.google.com; 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 d27si3368776otk.206.2019.12.19.02.57.56; Thu, 19 Dec 2019 02:58:08 -0800 (PST) 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; 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 S1726943AbfLSK4x (ORCPT + 99 others); Thu, 19 Dec 2019 05:56:53 -0500 Received: from mout-p-202.mailbox.org ([80.241.56.172]:29784 "EHLO mout-p-202.mailbox.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726702AbfLSK4x (ORCPT ); Thu, 19 Dec 2019 05:56:53 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:105:465:1:1:0]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 47dpjG2rbczQlDD; Thu, 19 Dec 2019 11:56:50 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp1.mailbox.org ([80.241.60.240]) by spamfilter02.heinlein-hosting.de (spamfilter02.heinlein-hosting.de [80.241.56.116]) (amavisd-new, port 10030) with ESMTP id 7vreqxoenpiV; Thu, 19 Dec 2019 11:56:45 +0100 (CET) From: Aleksa Sarai To: Alexander Viro , Jeff Layton , "J. Bruce Fields" , Shuah Khan Cc: Aleksa Sarai , Florian Weimer , David Laight , Christian Brauner , dev@opencontainers.org, containers@lists.linux-foundation.org, libc-alpha@sourceware.org, linux-api@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH 1/2] uapi: split openat2(2) definitions from fcntl.h Date: Thu, 19 Dec 2019 21:55:32 +1100 Message-Id: <20191219105533.12508-5-cyphar@cyphar.com> In-Reply-To: <20191219105533.12508-1-cyphar@cyphar.com> References: <20191219105533.12508-1-cyphar@cyphar.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Florian mentioned that glibc doesn't use fcntl.h because it has some issues with namespace cleanliness, and that we should have a separate header for openat2(2) if possible. Suggested-by: Florian Weimer Signed-off-by: Aleksa Sarai --- MAINTAINERS | 1 + include/uapi/linux/fcntl.h | 37 +------------------------------- include/uapi/linux/openat2.h | 41 ++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 36 deletions(-) create mode 100644 include/uapi/linux/openat2.h diff --git a/MAINTAINERS b/MAINTAINERS index bd5847e802de..737ada377ac3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6397,6 +6397,7 @@ F: fs/* F: include/linux/fs.h F: include/linux/fs_types.h F: include/uapi/linux/fs.h +F: include/uapi/linux/openat2.h FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER M: Riku Voipio diff --git a/include/uapi/linux/fcntl.h b/include/uapi/linux/fcntl.h index d886bdb585e4..ca88b7bce553 100644 --- a/include/uapi/linux/fcntl.h +++ b/include/uapi/linux/fcntl.h @@ -3,6 +3,7 @@ #define _UAPI_LINUX_FCNTL_H #include +#include #define F_SETLEASE (F_LINUX_SPECIFIC_BASE + 0) #define F_GETLEASE (F_LINUX_SPECIFIC_BASE + 1) @@ -100,40 +101,4 @@ #define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */ -/* - * Arguments for how openat2(2) should open the target path. If @resolve is - * zero, then openat2(2) operates very similarly to openat(2). - * - * However, unlike openat(2), unknown bits in @flags result in -EINVAL rather - * than being silently ignored. @mode must be zero unless one of {O_CREAT, - * O_TMPFILE} are set. - * - * @flags: O_* flags. - * @mode: O_CREAT/O_TMPFILE file mode. - * @resolve: RESOLVE_* flags. - */ -struct open_how { - __aligned_u64 flags; - __u16 mode; - __u16 __padding[3]; /* must be zeroed */ - __aligned_u64 resolve; -}; - -#define OPEN_HOW_SIZE_VER0 24 /* sizeof first published struct */ -#define OPEN_HOW_SIZE_LATEST OPEN_HOW_SIZE_VER0 - -/* how->resolve flags for openat2(2). */ -#define RESOLVE_NO_XDEV 0x01 /* Block mount-point crossings - (includes bind-mounts). */ -#define RESOLVE_NO_MAGICLINKS 0x02 /* Block traversal through procfs-style - "magic-links". */ -#define RESOLVE_NO_SYMLINKS 0x04 /* Block traversal through all symlinks - (implies OEXT_NO_MAGICLINKS) */ -#define RESOLVE_BENEATH 0x08 /* Block "lexical" trickery like - "..", symlinks, and absolute - paths which escape the dirfd. */ -#define RESOLVE_IN_ROOT 0x10 /* Make all jumps to "/" and ".." - be scoped inside the dirfd - (similar to chroot(2)). */ - #endif /* _UAPI_LINUX_FCNTL_H */ diff --git a/include/uapi/linux/openat2.h b/include/uapi/linux/openat2.h new file mode 100644 index 000000000000..19ef775e8e5e --- /dev/null +++ b/include/uapi/linux/openat2.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _UAPI_LINUX_OPENAT2_H +#define _UAPI_LINUX_OPENAT2_H + +/* + * Arguments for how openat2(2) should open the target path. If @resolve is + * zero, then openat2(2) operates very similarly to openat(2). + * + * However, unlike openat(2), unknown bits in @flags result in -EINVAL rather + * than being silently ignored. @mode must be zero unless one of {O_CREAT, + * O_TMPFILE} are set. + * + * @flags: O_* flags. + * @mode: O_CREAT/O_TMPFILE file mode. + * @resolve: RESOLVE_* flags. + */ +struct open_how { + __aligned_u64 flags; + __u16 mode; + __u16 __padding[3]; /* must be zeroed */ + __aligned_u64 resolve; +}; + +#define OPEN_HOW_SIZE_VER0 24 /* sizeof first published struct */ +#define OPEN_HOW_SIZE_LATEST OPEN_HOW_SIZE_VER0 + +/* how->resolve flags for openat2(2). */ +#define RESOLVE_NO_XDEV 0x01 /* Block mount-point crossings + (includes bind-mounts). */ +#define RESOLVE_NO_MAGICLINKS 0x02 /* Block traversal through procfs-style + "magic-links". */ +#define RESOLVE_NO_SYMLINKS 0x04 /* Block traversal through all symlinks + (implies OEXT_NO_MAGICLINKS) */ +#define RESOLVE_BENEATH 0x08 /* Block "lexical" trickery like + "..", symlinks, and absolute + paths which escape the dirfd. */ +#define RESOLVE_IN_ROOT 0x10 /* Make all jumps to "/" and ".." + be scoped inside the dirfd + (similar to chroot(2)). */ + +#endif /* _UAPI_LINUX_OPENAT2_H */ -- 2.24.0