From fe2d3c2473d3db146ae2a2823549abdfa380ca51 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Wed, 4 Jan 2023 13:00:04 -0800 Subject: [PATCH] Revert "fs: add is_idmapped_mnt() helper" This reverts commit bac0953c9fe0665c8813cb620b24f035ed4f0da2. --- fs/cachefiles/bind.c | 2 +- fs/ecryptfs/main.c | 2 +- fs/namespace.c | 2 +- fs/nfsd/export.c | 2 +- fs/overlayfs/super.c | 2 +- fs/proc_namespace.c | 2 +- include/linux/fs.h | 14 -------------- 7 files changed, 6 insertions(+), 20 deletions(-) diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c index 146291be6263..d463d89f5db8 100644 --- a/fs/cachefiles/bind.c +++ b/fs/cachefiles/bind.c @@ -117,7 +117,7 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache) root = path.dentry; ret = -EINVAL; - if (is_idmapped_mnt(path.mnt)) { + if (mnt_user_ns(path.mnt) != &init_user_ns) { pr_warn("File cache on idmapped mounts not supported"); goto error_unsupported; } diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index 2dd23a82e0de..d66bbd2df191 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -537,7 +537,7 @@ static struct dentry *ecryptfs_mount(struct file_system_type *fs_type, int flags goto out_free; } - if (is_idmapped_mnt(path.mnt)) { + if (mnt_user_ns(path.mnt) != &init_user_ns) { rc = -EINVAL; printk(KERN_ERR "Mounting on idmapped mounts currently disallowed\n"); goto out_free; diff --git a/fs/namespace.c b/fs/namespace.c index 4994b816a74c..659a8f39c61a 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -3936,7 +3936,7 @@ static int can_idmap_mount(const struct mount_kattr *kattr, struct mount *mnt) * mapping. It makes things simpler and callers can just create * another bind-mount they can idmap if they want to. */ - if (is_idmapped_mnt(m)) + if (mnt_user_ns(m) != &init_user_ns) return -EPERM; /* The underlying filesystem doesn't support idmapped mounts yet. */ diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 668c7527b17e..9421dae22737 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -427,7 +427,7 @@ static int check_export(struct path *path, int *flags, unsigned char *uuid) return -EINVAL; } - if (is_idmapped_mnt(path->mnt)) { + if (mnt_user_ns(path->mnt) != &init_user_ns) { dprintk("exp_export: export of idmapped mounts not yet supported.\n"); return -EINVAL; } diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 31ebe4061460..178daa5e82c9 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -869,7 +869,7 @@ static int ovl_mount_dir_noesc(const char *name, struct path *path) pr_err("filesystem on '%s' not supported\n", name); goto out_put; } - if (is_idmapped_mnt(path->mnt)) { + if (mnt_user_ns(path->mnt) != &init_user_ns) { pr_err("idmapped layers are currently not supported\n"); goto out_put; } diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c index 49650e54d2f8..392ef5162655 100644 --- a/fs/proc_namespace.c +++ b/fs/proc_namespace.c @@ -80,7 +80,7 @@ static void show_mnt_opts(struct seq_file *m, struct vfsmount *mnt) seq_puts(m, fs_infop->str); } - if (is_idmapped_mnt(mnt)) + if (mnt_user_ns(mnt) != &init_user_ns) seq_puts(m, ",idmapped"); } diff --git a/include/linux/fs.h b/include/linux/fs.h index 090c478ba12f..af7a9a1fbc25 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2724,20 +2724,6 @@ static inline struct user_namespace *file_mnt_user_ns(struct file *file) { return mnt_user_ns(file->f_path.mnt); } - -/** - * is_idmapped_mnt - check whether a mount is mapped - * @mnt: the mount to check - * - * If @mnt has an idmapping attached to it @mnt is mapped. - * - * Return: true if mount is mapped, false if not. - */ -static inline bool is_idmapped_mnt(const struct vfsmount *mnt) -{ - return mnt_user_ns(mnt) != &init_user_ns; -} - extern long vfs_truncate(const struct path *, loff_t); int do_truncate(struct user_namespace *, struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp);