Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp278876pxb; Thu, 21 Jan 2021 07:00:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJzKACpfZBi0YkLolNvuV2PElMsUP5G99RNbYORRQM/WRoP1ZX7/Z/+169oWN8L16t6CKmxN X-Received: by 2002:a05:6402:2c4:: with SMTP id b4mr11542389edx.49.1611241258325; Thu, 21 Jan 2021 07:00:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611241258; cv=none; d=google.com; s=arc-20160816; b=rBcJarsGX2+LjIeppRmMOSlF5NAUtGjFqQWIyKoy0JmFK9YFoBGhiCvFJ5zXU3tuNB tR/XWxz318u9rXlMpg1ohPIsvLDP3fVgPg/zoIimN6gLs/t39olQkCGemSJHC+7DAfsv 6wKpu9XvoEJf1EP+R59hC7Cz16T3Q6XhPrG1dgB7eRib7x1bPf2BLoltyo4duZx0KmQq cE8eJLGZmK0SmHBg4MALFRqREQcz3iECKAjIYG/00FZ2EKm9KqCawlhBGr2BurPO7Pm9 vdvqwdz3rtr03z8GtSX/KZlns8YjiEBcjZOsODG1Jd5L/rMhard7zdqTxz6dGOwLzYSG ZjzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=JyvzfP8YYi5cunOOeb5g4yuJyW8HGaAsXIUD0JvHlf8=; b=Xk5dUtS4btVc8gE/Gyw/KJ9HV+NZhf8KOLOFC9Oglq6iSRUiTXxp8CiYn3OzMqtmyK n4cPqTXzAJBGBV1nOlbEf8L1N53xzKY7As5//hWvoj0zBdrzolsdECxQen2YbWo+fII5 y7PbaIGJ/rkxMP+daSn1DBBU0rxMlM2+IetgCWM4A9+xNTzgEyYXfbuC3LkirKPpta9v FL+u83Ajv0cQqsRUJy6HyOmJrD9N7qgZ3cIAFBeDULhNwn0/90b5k+bnI5weLNEuRnDg cyxajqh+PJC0OR/Kcyt3g9yV0Kma40yZi/drbhKmt3ZSJIhVgVXsDhMmSMXhPDsuUmXu n4Mg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l6si1858439ejg.403.2021.01.21.07.00.31; Thu, 21 Jan 2021 07:00:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732232AbhAUO6B (ORCPT + 99 others); Thu, 21 Jan 2021 09:58:01 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:54948 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731743AbhAUNaO (ORCPT ); Thu, 21 Jan 2021 08:30:14 -0500 Received: from ip5f5af0a0.dynamic.kabel-deutschland.de ([95.90.240.160] helo=wittgenstein.fritz.box) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1l2Zv5-0005g7-Up; Thu, 21 Jan 2021 13:22:40 +0000 From: Christian Brauner To: Alexander Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org Cc: John Johansen , James Morris , Mimi Zohar , Dmitry Kasatkin , Stephen Smalley , Casey Schaufler , Arnd Bergmann , Andreas Dilger , OGAWA Hirofumi , Geoffrey Thomas , Mrunal Patel , Josh Triplett , Andy Lutomirski , Theodore Tso , Alban Crequy , Tycho Andersen , David Howells , James Bottomley , Seth Forshee , =?UTF-8?q?St=C3=A9phane=20Graber?= , Linus Torvalds , Aleksa Sarai , Lennart Poettering , "Eric W. Biederman" , smbarber@chromium.org, Phil Estes , Serge Hallyn , Kees Cook , Todd Kjos , Paul Moore , Jonathan Corbet , containers@lists.linux-foundation.org, linux-security-module@vger.kernel.org, linux-api@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-integrity@vger.kernel.org, selinux@vger.kernel.org, Christian Brauner Subject: [PATCH v6 33/40] fs: add attr_flags_to_mnt_flags helper Date: Thu, 21 Jan 2021 14:19:52 +0100 Message-Id: <20210121131959.646623-34-christian.brauner@ubuntu.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210121131959.646623-1-christian.brauner@ubuntu.com> References: <20210121131959.646623-1-christian.brauner@ubuntu.com> MIME-Version: 1.0 X-Patch-Hashes: v=1; h=sha256; i=e2Flmg4jYrA1/8xjvTMZVbDsoqOcpDdlFS5OCvIgQko=; m=u2M4i3oMTrdlKn+85wXLpp6CTMaMeluzJmUp7YHjalg=; p=JfaZUhuTz6XFrBAP3FKbw5UfGeFYsRx1RlcZfKhbBn0=; g=f364f419030f1b33d11154114b1ba3e23cb27139 X-Patch-Sig: m=pgp; i=christian.brauner@ubuntu.com; s=0x0x91C61BC06578DCA2; b=iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCYAl9pgAKCRCRxhvAZXjcouLeAQCwN0L UMzAc+b2wV9R/1ubGXmwbf3c4wOilRFaNYGjMKAD+MRD1HJobIaj05yjpH2QI+aqS5YhdQvfZFIk0 1fZgYQU= Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Add a simple helper to translate uapi MOUNT_ATTR_* flags to MNT_* flags which we will use in follow-up patches too. Link: https://lore.kernel.org/r/20210112220124.837960-6-christian.brauner@ubuntu.com Cc: David Howells Cc: Al Viro Cc: linux-fsdevel@vger.kernel.org Suggested-by: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Christian Brauner --- /* v2 */ patch not present /* v3 */ patch not present /* v4 */ patch introduced /* v5 */ unchanged base-commit: 7c53f6b671f4aba70ff15e1b05148b10d58c2837 /* v6 */ unchanged base-commit: 19c329f6808995b142b3966301f217c831e7cf31 --- fs/namespace.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 774ae5f74716..00ed0d6cb2ee 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -3465,6 +3465,28 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name, return ret; } +#define FSMOUNT_VALID_FLAGS \ + (MOUNT_ATTR_RDONLY | MOUNT_ATTR_NOSUID | MOUNT_ATTR_NODEV | \ + MOUNT_ATTR_NOEXEC | MOUNT_ATTR__ATIME | MOUNT_ATTR_NODIRATIME) + +static unsigned int attr_flags_to_mnt_flags(u64 attr_flags) +{ + unsigned int mnt_flags = 0; + + if (attr_flags & MOUNT_ATTR_RDONLY) + mnt_flags |= MNT_READONLY; + if (attr_flags & MOUNT_ATTR_NOSUID) + mnt_flags |= MNT_NOSUID; + if (attr_flags & MOUNT_ATTR_NODEV) + mnt_flags |= MNT_NODEV; + if (attr_flags & MOUNT_ATTR_NOEXEC) + mnt_flags |= MNT_NOEXEC; + if (attr_flags & MOUNT_ATTR_NODIRATIME) + mnt_flags |= MNT_NODIRATIME; + + return mnt_flags; +} + /* * Create a kernel mount representation for a new, prepared superblock * (specified by fs_fd) and attach to an open_tree-like file descriptor. @@ -3487,24 +3509,10 @@ SYSCALL_DEFINE3(fsmount, int, fs_fd, unsigned int, flags, if ((flags & ~(FSMOUNT_CLOEXEC)) != 0) return -EINVAL; - if (attr_flags & ~(MOUNT_ATTR_RDONLY | - MOUNT_ATTR_NOSUID | - MOUNT_ATTR_NODEV | - MOUNT_ATTR_NOEXEC | - MOUNT_ATTR__ATIME | - MOUNT_ATTR_NODIRATIME)) + if (attr_flags & ~FSMOUNT_VALID_FLAGS) return -EINVAL; - if (attr_flags & MOUNT_ATTR_RDONLY) - mnt_flags |= MNT_READONLY; - if (attr_flags & MOUNT_ATTR_NOSUID) - mnt_flags |= MNT_NOSUID; - if (attr_flags & MOUNT_ATTR_NODEV) - mnt_flags |= MNT_NODEV; - if (attr_flags & MOUNT_ATTR_NOEXEC) - mnt_flags |= MNT_NOEXEC; - if (attr_flags & MOUNT_ATTR_NODIRATIME) - mnt_flags |= MNT_NODIRATIME; + mnt_flags = attr_flags_to_mnt_flags(attr_flags); switch (attr_flags & MOUNT_ATTR__ATIME) { case MOUNT_ATTR_STRICTATIME: -- 2.30.0