mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 18:23:53 +08:00
fs: add attr_flags_to_mnt_flags helper
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/20210121131959.646623-34-christian.brauner@ubuntu.com Cc: David Howells <dhowells@redhat.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: linux-fsdevel@vger.kernel.org Suggested-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
fbdc2f6c40
commit
5b490500f9
@ -3465,6 +3465,28 @@ out_type:
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user