Convert to const struct mnt_idmap.

A mount's idmapping is immutable. The only thing that is allowed to be
modified afterwards is the reference count and that is hidden behind
mnt_idmap_get() and mnt_idmap_put(). Everything else only ever reads
from the idmapping. This is the same model that struct cred uses and the
idmapping is also rather sensitive.

So make the idmap argument const wherever we can. The conversion is done
from the bottom up so callers can continue to pass a non-const pointer
to a const parameter until the conversion is finished.

No functional changes.

Signed-off-by: Christian Brauner (Amutable) <[email protected]>
---
 fs/btrfs/btrfs_inode.h         |  2 +-
 fs/btrfs/inode.c               |  6 +++---
 fs/btrfs/ioctl.c               |  2 +-
 fs/ext4/ext4.h                 |  2 +-
 fs/ext4/ialloc.c               |  2 +-
 fs/ext4/namei.c                |  4 ++--
 fs/f2fs/f2fs.h                 |  2 +-
 fs/f2fs/namei.c                | 10 +++++-----
 fs/hugetlbfs/inode.c           |  2 +-
 fs/inode.c                     |  4 ++--
 fs/namei.c                     |  2 +-
 fs/overlayfs/dir.c             |  2 +-
 fs/xfs/libxfs/xfs_inode_util.h |  2 +-
 fs/xfs/xfs_inode.c             |  4 ++--
 fs/xfs/xfs_inode.h             |  2 +-
 fs/xfs/xfs_iops.c              |  2 +-
 fs/xfs/xfs_symlink.c           |  2 +-
 fs/xfs/xfs_symlink.h           |  2 +-
 include/linux/fs.h             |  4 ++--
 mm/shmem.c                     |  8 ++++----
 20 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
index 1082fa92c145..26ce5319c7fc 100644
--- a/fs/btrfs/btrfs_inode.h
+++ b/fs/btrfs/btrfs_inode.h
@@ -559,7 +559,7 @@ int btrfs_new_inode_prepare(struct btrfs_new_inode_args 
*args,
 int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
                           struct btrfs_new_inode_args *args);
 void btrfs_new_inode_args_destroy(struct btrfs_new_inode_args *args);
-struct inode *btrfs_new_subvol_inode(struct mnt_idmap *idmap,
+struct inode *btrfs_new_subvol_inode(const struct mnt_idmap *idmap,
                                     struct inode *dir);
  void btrfs_set_delalloc_extent(struct btrfs_inode *inode, struct extent_state 
*state,
                                u32 bits);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 3c10a0ef0002..d5a78d9027e2 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8022,7 +8022,7 @@ static int btrfs_truncate(struct btrfs_inode *inode, bool 
skip_writeback)
        return ret;
 }
 
-struct inode *btrfs_new_subvol_inode(struct mnt_idmap *idmap,
+struct inode *btrfs_new_subvol_inode(const struct mnt_idmap *idmap,
                                     struct inode *dir)
 {
        struct inode *inode;
@@ -8540,7 +8540,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
        return ret;
 }
 
-static struct inode *new_whiteout_inode(struct mnt_idmap *idmap,
+static struct inode *new_whiteout_inode(const struct mnt_idmap *idmap,
                                        struct inode *dir)
 {
        struct inode *inode;
@@ -8555,7 +8555,7 @@ static struct inode *new_whiteout_inode(struct mnt_idmap 
*idmap,
        return inode;
 }
 
-static int btrfs_rename(struct mnt_idmap *idmap,
+static int btrfs_rename(const struct mnt_idmap *idmap,
                        struct inode *old_dir, struct dentry *old_dentry,
                        struct inode *new_dir, struct dentry *new_dentry,
                        unsigned int flags)
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index b34c6a8247e4..8eacdc2ee4de 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -534,7 +534,7 @@ static unsigned int create_subvol_num_items(const struct 
btrfs_qgroup_inherit *i
        return num_items;
 }
 
-static noinline int create_subvol(struct mnt_idmap *idmap,
+static noinline int create_subvol(const struct mnt_idmap *idmap,
                                  struct inode *dir, struct dentry *dentry,
                                  struct btrfs_qgroup_inherit *inherit)
 {
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 724a27e8be61..aef86b1d10fa 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -3044,7 +3044,7 @@ extern int ext4fs_dirhash(const struct inode *dir, const 
char *name, int len,
 
 /* ialloc.c */
 extern int ext4_mark_inode_used(struct super_block *sb, int ino);
-extern struct inode *__ext4_new_inode(struct mnt_idmap *, handle_t *,
+extern struct inode *__ext4_new_inode(const struct mnt_idmap *, handle_t *,
                                      struct inode *, umode_t,
                                      const struct qstr *qstr, __u32 goal,
                                      uid_t *owner, __u32 i_flags,
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index a5831fc536db..529623103ae7 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -930,7 +930,7 @@ static int ext4_xattr_credits_for_new_inode(struct inode 
*dir, mode_t mode,
  * For other inodes, search forward from the parent directory's block
  * group to find a free inode.
  */
-struct inode *__ext4_new_inode(struct mnt_idmap *idmap,
+struct inode *__ext4_new_inode(const struct mnt_idmap *idmap,
                               handle_t *handle, struct inode *dir,
                               umode_t mode, const struct qstr *qstr,
                               __u32 goal, uid_t *owner, __u32 i_flags,
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index a6386c1d237f..edc12599e64d 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -3753,7 +3753,7 @@ static void ext4_update_dir_count(handle_t *handle, 
struct ext4_renament *ent)
        }
 }
 
-static struct inode *ext4_whiteout_for_rename(struct mnt_idmap *idmap,
+static struct inode *ext4_whiteout_for_rename(const struct mnt_idmap *idmap,
                                              struct ext4_renament *ent,
                                              int credits, handle_t **h)
 {
@@ -3796,7 +3796,7 @@ static struct inode *ext4_whiteout_for_rename(struct 
mnt_idmap *idmap,
  * while new_{dentry,inode) refers to the destination dentry/inode
  * This comes from rename(const char *oldpath, const char *newpath)
  */
-static int ext4_rename(struct mnt_idmap *idmap, struct inode *old_dir,
+static int ext4_rename(const struct mnt_idmap *idmap, struct inode *old_dir,
                       struct dentry *old_dentry, struct inode *new_dir,
                       struct dentry *new_dentry, unsigned int flags)
 {
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 9940a6cecf1a..eefc886e3ffc 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3890,7 +3890,7 @@ void f2fs_destroy_evict_inode_work(void);
 int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,
                                                        bool hot, bool set);
 struct dentry *f2fs_get_parent(struct dentry *child);
-int f2fs_get_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
+int f2fs_get_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
                     struct inode **new_inode);
 
 /*
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index ff86ee07290d..e33780294713 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -231,7 +231,7 @@ static void set_file_temperature(struct f2fs_sb_info *sbi, 
struct inode *inode,
                file_set_hot(inode);
 }
 
-static struct inode *f2fs_new_inode(struct mnt_idmap *idmap,
+static struct inode *f2fs_new_inode(const struct mnt_idmap *idmap,
                                                struct inode *dir, umode_t mode,
                                                const char *name)
 {
@@ -857,7 +857,7 @@ static int f2fs_mknod(struct mnt_idmap *idmap, struct inode 
*dir,
        return err;
 }
 
-static int __f2fs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
+static int __f2fs_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
                          struct file *file, umode_t mode, bool is_whiteout,
                          struct inode **new_inode, struct f2fs_filename *fname)
 {
@@ -944,7 +944,7 @@ static int f2fs_tmpfile(struct mnt_idmap *idmap, struct 
inode *dir,
        return finish_open_simple(file, err);
 }
 
-static int f2fs_create_whiteout(struct mnt_idmap *idmap,
+static int f2fs_create_whiteout(const struct mnt_idmap *idmap,
                                struct inode *dir, struct inode **whiteout,
                                struct f2fs_filename *fname)
 {
@@ -952,14 +952,14 @@ static int f2fs_create_whiteout(struct mnt_idmap *idmap,
                                                true, whiteout, fname);
 }
 
-int f2fs_get_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
+int f2fs_get_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
                     struct inode **new_inode)
 {
        return __f2fs_tmpfile(idmap, dir, NULL, S_IFREG,
                                false, new_inode, NULL);
 }
 
-static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
+static int f2fs_rename(const struct mnt_idmap *idmap, struct inode *old_dir,
                        struct dentry *old_dentry, struct inode *new_dir,
                        struct dentry *new_dentry, unsigned int flags)
 {
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 7611a8470ea2..4bd3adc20a47 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -892,7 +892,7 @@ static struct inode *hugetlbfs_get_root(struct super_block 
*sb,
 static struct lock_class_key hugetlbfs_i_mmap_rwsem_key;
 
 static struct inode *hugetlbfs_get_inode(struct super_block *sb,
-                                       struct mnt_idmap *idmap,
+                                       const struct mnt_idmap *idmap,
                                        struct inode *dir,
                                        umode_t mode, dev_t dev)
 {
diff --git a/fs/inode.c b/fs/inode.c
index 4313e9735c5c..99f1aab89eae 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -2716,7 +2716,7 @@ EXPORT_SYMBOL(init_special_inode);
  * and initializing i_uid and i_gid. On non-idmapped mounts or if permission
  * checking is to be performed on the raw inode simply pass @nop_mnt_idmap.
  */
-void inode_init_owner(struct mnt_idmap *idmap, struct inode *inode,
+void inode_init_owner(const struct mnt_idmap *idmap, struct inode *inode,
                      const struct inode *dir, umode_t mode)
 {
        inode_fsuid_set(inode, idmap);
@@ -3058,7 +3058,7 @@ EXPORT_SYMBOL(in_group_or_capable);
  *
  * Return: the new mode to use for the file
  */
-umode_t mode_strip_sgid(struct mnt_idmap *idmap,
+umode_t mode_strip_sgid(const struct mnt_idmap *idmap,
                        const struct inode *dir, umode_t mode)
 {
        if ((mode & (S_ISGID | S_IXGRP)) != (S_ISGID | S_IXGRP))
diff --git a/fs/namei.c b/fs/namei.c
index 603d43e4a961..db82daec3646 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -4142,7 +4142,7 @@ EXPORT_SYMBOL(end_renaming);
  *
  * Returns: mode to be passed to the filesystem
  */
-static inline umode_t vfs_prepare_mode(struct mnt_idmap *idmap,
+static inline umode_t vfs_prepare_mode(const struct mnt_idmap *idmap,
                                       const struct inode *dir, umode_t mode,
                                       umode_t mask_perms, umode_t type)
 {
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index 7beb0af26498..a022dc7781bf 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -688,7 +688,7 @@ static int ovl_create_or_link(struct dentry *dentry, struct 
inode *inode,
        return err;
 }
 
-static int ovl_create_object(struct mnt_idmap *idmap, struct dentry *dentry,
+static int ovl_create_object(const struct mnt_idmap *idmap, struct dentry 
*dentry,
                             int mode, dev_t rdev, const char *link)
 {
        int err;
diff --git a/fs/xfs/libxfs/xfs_inode_util.h b/fs/xfs/libxfs/xfs_inode_util.h
index 060242998a23..e9eac35159c3 100644
--- a/fs/xfs/libxfs/xfs_inode_util.h
+++ b/fs/xfs/libxfs/xfs_inode_util.h
@@ -27,7 +27,7 @@ prid_t                xfs_get_initial_prid(struct xfs_inode 
*dp);
  * idmap to NULL.  To create a tree root, set pip to NULL.
  */
 struct xfs_icreate_args {
-       struct mnt_idmap        *idmap;
+       const struct mnt_idmap  *idmap;
        struct xfs_inode        *pip;   /* parent inode or null */
        dev_t                   rdev;
        umode_t                 mode;
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 030a7c8f2c12..6fcd1c5928f8 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -2084,7 +2084,7 @@ xfs_sort_inodes(
  */
 static int
 xfs_rename_alloc_whiteout(
-       struct mnt_idmap        *idmap,
+       const struct mnt_idmap  *idmap,
        struct xfs_name         *src_name,
        struct xfs_inode        *dp,
        struct xfs_inode        **wip)
@@ -2130,7 +2130,7 @@ xfs_rename_alloc_whiteout(
  */
 int
 xfs_rename(
-       struct mnt_idmap        *idmap,
+       const struct mnt_idmap  *idmap,
        struct xfs_inode        *src_dp,
        struct xfs_name         *src_name,
        struct xfs_inode        *src_ip,
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h
index 34c1038ebfcd..12bc4573c52d 100644
--- a/fs/xfs/xfs_inode.h
+++ b/fs/xfs/xfs_inode.h
@@ -568,7 +568,7 @@ int         xfs_remove(struct xfs_inode *dp, struct 
xfs_name *name,
                           struct xfs_inode *ip);
 int            xfs_link(struct xfs_inode *tdp, struct xfs_inode *sip,
                         struct xfs_name *target_name);
-int            xfs_rename(struct mnt_idmap *idmap,
+int            xfs_rename(const struct mnt_idmap *idmap,
                           struct xfs_inode *src_dp, struct xfs_name *src_name,
                           struct xfs_inode *src_ip, struct xfs_inode 
*target_dp,
                           struct xfs_name *target_name,
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 4a3299abf774..df5e7c1b2334 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -169,7 +169,7 @@ xfs_create_need_xattr(
 
 STATIC int
 xfs_generic_create(
-       struct mnt_idmap        *idmap,
+       const struct mnt_idmap  *idmap,
        struct inode            *dir,
        struct dentry           *dentry,
        umode_t                 mode,
diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c
index 5585ac7f4d16..40a9bb1703b5 100644
--- a/fs/xfs/xfs_symlink.c
+++ b/fs/xfs/xfs_symlink.c
@@ -82,7 +82,7 @@ xfs_readlink(
 
 int
 xfs_symlink(
-       struct mnt_idmap        *idmap,
+       const struct mnt_idmap  *idmap,
        struct xfs_inode        *dp,
        struct xfs_name         *link_name,
        const char              *target_path,
diff --git a/fs/xfs/xfs_symlink.h b/fs/xfs/xfs_symlink.h
index 0d29a50e66fd..3c5a969f9fc5 100644
--- a/fs/xfs/xfs_symlink.h
+++ b/fs/xfs/xfs_symlink.h
@@ -7,7 +7,7 @@
 
 /* Kernel only symlink definitions */
 
-int xfs_symlink(struct mnt_idmap *idmap, struct xfs_inode *dp,
+int xfs_symlink(const struct mnt_idmap *idmap, struct xfs_inode *dp,
                struct xfs_name *link_name, const char *target_path,
                umode_t mode, struct xfs_inode **ipp);
 int xfs_readlink(struct xfs_inode *ip, char *link);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index e2babddf755d..91a23c8dbbf6 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1830,10 +1830,10 @@ extern long compat_ptr_ioctl(struct file *file, 
unsigned int cmd,
 /*
  * VFS file helper functions.
  */
-void inode_init_owner(struct mnt_idmap *idmap, struct inode *inode,
+void inode_init_owner(const struct mnt_idmap *idmap, struct inode *inode,
                      const struct inode *dir, umode_t mode);
 extern bool may_open_dev(const struct path *path);
-umode_t mode_strip_sgid(struct mnt_idmap *idmap,
+umode_t mode_strip_sgid(const struct mnt_idmap *idmap,
                        const struct inode *dir, umode_t mode);
 bool in_group_or_capable(const struct mnt_idmap *idmap,
                         const struct inode *inode, vfsgid_t vfsgid);
diff --git a/mm/shmem.c b/mm/shmem.c
index 897fa2b61346..9ab5231c4dfe 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3022,7 +3022,7 @@ static struct offset_ctx *shmem_get_offset_ctx(struct 
inode *inode)
        return &SHMEM_I(inode)->dir_offsets;
 }
 
-static struct inode *__shmem_get_inode(struct mnt_idmap *idmap,
+static struct inode *__shmem_get_inode(const struct mnt_idmap *idmap,
                                       struct super_block *sb,
                                       struct inode *dir, umode_t mode,
                                       dev_t dev, vma_flags_t flags)
@@ -3102,7 +3102,7 @@ static struct inode *__shmem_get_inode(struct mnt_idmap 
*idmap,
 }
 
 #ifdef CONFIG_TMPFS_QUOTA
-static struct inode *shmem_get_inode(struct mnt_idmap *idmap,
+static struct inode *shmem_get_inode(const struct mnt_idmap *idmap,
                                     struct super_block *sb, struct inode *dir,
                                     umode_t mode, dev_t dev, vma_flags_t flags)
 {
@@ -3130,7 +3130,7 @@ static struct inode *shmem_get_inode(struct mnt_idmap 
*idmap,
        return ERR_PTR(err);
 }
 #else
-static struct inode *shmem_get_inode(struct mnt_idmap *idmap,
+static struct inode *shmem_get_inode(const struct mnt_idmap *idmap,
                                     struct super_block *sb, struct inode *dir,
                                     umode_t mode, dev_t dev, vma_flags_t flags)
 {
@@ -5792,7 +5792,7 @@ static inline void shmem_unacct_size(unsigned long flags, 
loff_t size)
 {
 }
 
-static inline struct inode *shmem_get_inode(struct mnt_idmap *idmap,
+static inline struct inode *shmem_get_inode(const struct mnt_idmap *idmap,
                                struct super_block *sb, struct inode *dir,
                                umode_t mode, dev_t dev, vma_flags_t flags)
 {

-- 
2.53.0


Reply via email to