On Tue 01-09-26 14:14:42, Christian Brauner wrote:
> 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]>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

                                                                Honza

> ---
>  Documentation/filesystems/locking.rst | 2 +-
>  Documentation/filesystems/vfs.rst     | 2 +-
>  fs/bad_inode.c                        | 2 +-
>  fs/btrfs/inode.c                      | 2 +-
>  fs/ext2/namei.c                       | 2 +-
>  fs/ext4/namei.c                       | 2 +-
>  fs/f2fs/namei.c                       | 2 +-
>  fs/fuse/dir.c                         | 2 +-
>  fs/hugetlbfs/inode.c                  | 2 +-
>  fs/minix/namei.c                      | 2 +-
>  fs/overlayfs/dir.c                    | 2 +-
>  fs/ramfs/inode.c                      | 2 +-
>  fs/smb/client/cifsfs.h                | 2 +-
>  fs/smb/client/dir.c                   | 2 +-
>  fs/ubifs/dir.c                        | 2 +-
>  fs/udf/namei.c                        | 2 +-
>  fs/xfs/xfs_iops.c                     | 2 +-
>  include/linux/fs.h                    | 2 +-
>  include/linux/lsm_hook_defs.h         | 2 +-
>  include/linux/security.h              | 4 ++--
>  mm/shmem.c                            | 2 +-
>  security/integrity/ima/ima_main.c     | 2 +-
>  security/security.c                   | 2 +-
>  23 files changed, 24 insertions(+), 24 deletions(-)
> 
> diff --git a/Documentation/filesystems/locking.rst 
> b/Documentation/filesystems/locking.rst
> index 167988321a8c..e4948ddc0a5f 100644
> --- a/Documentation/filesystems/locking.rst
> +++ b/Documentation/filesystems/locking.rst
> @@ -86,7 +86,7 @@ prototypes::
>       int (*atomic_open)(struct inode *, struct dentry *,
>                               struct file *, unsigned open_flag,
>                               umode_t create_mode);
> -     int (*tmpfile) (struct mnt_idmap *, struct inode *,
> +     int (*tmpfile) (const struct mnt_idmap *, struct inode *,
>                       struct file *, umode_t);
>       int (*fileattr_set)(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct file_kattr *fa);
> diff --git a/Documentation/filesystems/vfs.rst 
> b/Documentation/filesystems/vfs.rst
> index 6adb1061a9b6..e960257ef14a 100644
> --- a/Documentation/filesystems/vfs.rst
> +++ b/Documentation/filesystems/vfs.rst
> @@ -438,7 +438,7 @@ As of kernel 2.6.22, the following members are defined:
>               void (*sync_lazytime)(struct inode *inode);
>               int (*atomic_open)(struct inode *, struct dentry *, struct file 
> *,
>                                  unsigned open_flag, umode_t create_mode);
> -             int (*tmpfile) (struct mnt_idmap *, struct inode *, struct file 
> *, umode_t);
> +             int (*tmpfile) (const struct mnt_idmap *, struct inode *, 
> struct file *, umode_t);
>               struct posix_acl * (*get_acl)(const struct mnt_idmap *, struct 
> dentry *, int);
>               int (*set_acl)(const struct mnt_idmap *, struct dentry *, 
> struct posix_acl *, int);
>               int (*fileattr_set)(const struct mnt_idmap *idmap,
> diff --git a/fs/bad_inode.c b/fs/bad_inode.c
> index 6e116810f66d..d8c0ce62cc63 100644
> --- a/fs/bad_inode.c
> +++ b/fs/bad_inode.c
> @@ -146,7 +146,7 @@ static int bad_inode_atomic_open(struct inode *inode, 
> struct dentry *dentry,
>       return -EIO;
>  }
>  
> -static int bad_inode_tmpfile(struct mnt_idmap *idmap,
> +static int bad_inode_tmpfile(const struct mnt_idmap *idmap,
>                            struct inode *inode, struct file *file,
>                            umode_t mode)
>  {
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 7bf38f069116..092057508ae9 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -9391,7 +9391,7 @@ static int btrfs_permission(const struct mnt_idmap 
> *idmap,
>       return generic_permission(idmap, inode, mask);
>  }
>  
> -static int btrfs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int btrfs_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                        struct file *file, umode_t mode)
>  {
>       struct btrfs_fs_info *fs_info = inode_to_fs_info(dir);
> diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
> index 8666233ec63b..108dc52cedfc 100644
> --- a/fs/ext2/namei.c
> +++ b/fs/ext2/namei.c
> @@ -117,7 +117,7 @@ static int ext2_create (struct mnt_idmap * idmap,
>       return ext2_add_nondir(dentry, inode);
>  }
>  
> -static int ext2_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int ext2_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                       struct file *file, umode_t mode)
>  {
>       struct inode *inode = ext2_new_inode(dir, mode, NULL);
> diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
> index edc12599e64d..0bff01fb052a 100644
> --- a/fs/ext4/namei.c
> +++ b/fs/ext4/namei.c
> @@ -2881,7 +2881,7 @@ static int ext4_mknod(struct mnt_idmap *idmap, struct 
> inode *dir,
>       return err;
>  }
>  
> -static int ext4_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int ext4_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                       struct file *file, umode_t mode)
>  {
>       handle_t *handle;
> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
> index e33780294713..3adc2345a204 100644
> --- a/fs/f2fs/namei.c
> +++ b/fs/f2fs/namei.c
> @@ -928,7 +928,7 @@ static int __f2fs_tmpfile(const 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)
>  {
>       struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
> diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
> index 0dbe3c6560f8..14dc9318cd57 100644
> --- a/fs/fuse/dir.c
> +++ b/fs/fuse/dir.c
> @@ -1098,7 +1098,7 @@ static int fuse_create(struct mnt_idmap *idmap, struct 
> inode *dir,
>       return fuse_mknod(idmap, dir, entry, mode, 0);
>  }
>  
> -static int fuse_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int fuse_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                       struct file *file, umode_t mode)
>  {
>       struct fuse_conn *fc = get_fuse_conn(dir);
> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
> index 4bd3adc20a47..8a07a3f18c05 100644
> --- a/fs/hugetlbfs/inode.c
> +++ b/fs/hugetlbfs/inode.c
> @@ -984,7 +984,7 @@ static int hugetlbfs_create(struct mnt_idmap *idmap,
>       return hugetlbfs_mknod(idmap, dir, dentry, mode | S_IFREG, 0);
>  }
>  
> -static int hugetlbfs_tmpfile(struct mnt_idmap *idmap,
> +static int hugetlbfs_tmpfile(const struct mnt_idmap *idmap,
>                            struct inode *dir, struct file *file,
>                            umode_t mode)
>  {
> diff --git a/fs/minix/namei.c b/fs/minix/namei.c
> index 5525ba367ed7..0575dea16a3b 100644
> --- a/fs/minix/namei.c
> +++ b/fs/minix/namei.c
> @@ -50,7 +50,7 @@ static int minix_mknod(struct mnt_idmap *idmap, struct 
> inode *dir,
>       return add_nondir(dentry, inode);
>  }
>  
> -static int minix_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int minix_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                        struct file *file, umode_t mode)
>  {
>       struct inode *inode = minix_new_inode(dir, mode);
> diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
> index a022dc7781bf..4f3f1e2bafff 100644
> --- a/fs/overlayfs/dir.c
> +++ b/fs/overlayfs/dir.c
> @@ -1420,7 +1420,7 @@ static int ovl_dummy_open(struct inode *inode, struct 
> file *file)
>       return 0;
>  }
>  
> -static int ovl_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int ovl_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                      struct file *file, umode_t mode)
>  {
>       int err;
> diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
> index 0a88ede48e0a..fc9a79af4840 100644
> --- a/fs/ramfs/inode.c
> +++ b/fs/ramfs/inode.c
> @@ -163,7 +163,7 @@ static int ramfs_symlink(struct mnt_idmap *idmap, struct 
> inode *dir,
>       return error;
>  }
>  
> -static int ramfs_tmpfile(struct mnt_idmap *idmap,
> +static int ramfs_tmpfile(const struct mnt_idmap *idmap,
>                        struct inode *dir, struct file *file, umode_t mode)
>  {
>       struct inode *inode;
> diff --git a/fs/smb/client/cifsfs.h b/fs/smb/client/cifsfs.h
> index 0c85daa8386e..255f478d3a18 100644
> --- a/fs/smb/client/cifsfs.h
> +++ b/fs/smb/client/cifsfs.h
> @@ -57,7 +57,7 @@ int cifs_create(struct mnt_idmap *idmap, struct inode *dir,
>               struct dentry *direntry, umode_t mode);
>  int cifs_atomic_open(struct inode *dir, struct dentry *direntry,
>                    struct file *file, unsigned int oflags, umode_t mode);
> -int cifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +int cifs_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                struct file *file, umode_t mode);
>  struct dentry *cifs_lookup(struct inode *parent_dir_inode,
>                          struct dentry *direntry, unsigned int flags);
> diff --git a/fs/smb/client/dir.c b/fs/smb/client/dir.c
> index 6fa6d48fdfd3..56a3e1966257 100644
> --- a/fs/smb/client/dir.c
> +++ b/fs/smb/client/dir.c
> @@ -1059,7 +1059,7 @@ static int set_tmpfile_attr(const unsigned int xid, 
> unsigned int oflags,
>   * The initial dentry state is unhashed-negative.  On success, dentry will
>   * become unhashed-positive by calling d_instantiate().
>   */
> -int cifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +int cifs_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                struct file *file, umode_t mode)
>  {
>       struct dentry *dentry = file->f_path.dentry;
> diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> index 23ec924162d6..0e1a4de9bb18 100644
> --- a/fs/ubifs/dir.c
> +++ b/fs/ubifs/dir.c
> @@ -440,7 +440,7 @@ static void unlock_2_inodes(struct inode *inode1, struct 
> inode *inode2)
>       mutex_unlock(&ubifs_inode(inode1)->ui_mutex);
>  }
>  
> -static int ubifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int ubifs_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                        struct file *file, umode_t mode)
>  {
>       struct dentry *dentry = file->f_path.dentry;
> diff --git a/fs/udf/namei.c b/fs/udf/namei.c
> index b90841ac0a40..8b5873b53324 100644
> --- a/fs/udf/namei.c
> +++ b/fs/udf/namei.c
> @@ -386,7 +386,7 @@ static int udf_create(struct mnt_idmap *idmap, struct 
> inode *dir,
>       return udf_add_nondir(dentry, inode);
>  }
>  
> -static int udf_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +static int udf_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>                      struct file *file, umode_t mode)
>  {
>       struct inode *inode = udf_new_inode(dir, mode);
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index 25d4d42fbc7f..06ca999d0927 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -1250,7 +1250,7 @@ xfs_vn_fiemap(
>  
>  STATIC int
>  xfs_vn_tmpfile(
> -     struct mnt_idmap        *idmap,
> +     const struct mnt_idmap  *idmap,
>       struct inode            *dir,
>       struct file             *file,
>       umode_t                 mode)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 9809e7c3aa0d..92161c224856 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2024,7 +2024,7 @@ struct inode_operations {
>       int (*atomic_open)(struct inode *, struct dentry *,
>                          struct file *, unsigned open_flag,
>                          umode_t create_mode);
> -     int (*tmpfile) (struct mnt_idmap *, struct inode *,
> +     int (*tmpfile) (const struct mnt_idmap *, struct inode *,
>                       struct file *, umode_t);
>       struct posix_acl *(*get_acl)(const struct mnt_idmap *, struct dentry *,
>                                    int);
> diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
> index e8638f7d2245..470de3fb22c1 100644
> --- a/include/linux/lsm_hook_defs.h
> +++ b/include/linux/lsm_hook_defs.h
> @@ -122,7 +122,7 @@ LSM_HOOK(int, 0, inode_init_security_anon, struct inode 
> *inode,
>        const struct qstr *name, const struct inode *context_inode)
>  LSM_HOOK(int, 0, inode_create, struct inode *dir, struct dentry *dentry,
>        umode_t mode)
> -LSM_HOOK(void, LSM_RET_VOID, inode_post_create_tmpfile, struct mnt_idmap 
> *idmap,
> +LSM_HOOK(void, LSM_RET_VOID, inode_post_create_tmpfile, const struct 
> mnt_idmap *idmap,
>        struct inode *inode)
>  LSM_HOOK(int, 0, inode_link, struct dentry *old_dentry, struct inode *dir,
>        struct dentry *new_dentry)
> diff --git a/include/linux/security.h b/include/linux/security.h
> index d5832750418a..b07a85e6aed4 100644
> --- a/include/linux/security.h
> +++ b/include/linux/security.h
> @@ -405,7 +405,7 @@ int security_inode_init_security_anon(struct inode *inode,
>                                     const struct qstr *name,
>                                     const struct inode *context_inode);
>  int security_inode_create(struct inode *dir, struct dentry *dentry, umode_t 
> mode);
> -void security_inode_post_create_tmpfile(struct mnt_idmap *idmap,
> +void security_inode_post_create_tmpfile(const struct mnt_idmap *idmap,
>                                       struct inode *inode);
>  int security_inode_link(struct dentry *old_dentry, struct inode *dir,
>                        struct dentry *new_dentry);
> @@ -910,7 +910,7 @@ static inline int security_inode_create(struct inode *dir,
>  }
>  
>  static inline void
> -security_inode_post_create_tmpfile(struct mnt_idmap *idmap, struct inode 
> *inode)
> +security_inode_post_create_tmpfile(const struct mnt_idmap *idmap, struct 
> inode *inode)
>  { }
>  
>  static inline int security_inode_link(struct dentry *old_dentry,
> diff --git a/mm/shmem.c b/mm/shmem.c
> index 097699ea2762..a107940660a8 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -3857,7 +3857,7 @@ shmem_mknod(struct mnt_idmap *idmap, struct inode *dir,
>  }
>  
>  static int
> -shmem_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
> +shmem_tmpfile(const struct mnt_idmap *idmap, struct inode *dir,
>             struct file *file, umode_t mode)
>  {
>       struct inode *inode;
> diff --git a/security/integrity/ima/ima_main.c 
> b/security/integrity/ima/ima_main.c
> index 8d9c92dc8825..72ecacda7528 100644
> --- a/security/integrity/ima/ima_main.c
> +++ b/security/integrity/ima/ima_main.c
> @@ -846,7 +846,7 @@ EXPORT_SYMBOL_GPL(ima_inode_hash);
>   * Skip calling process_measurement(), but indicate which newly, created
>   * tmpfiles are in policy.
>   */
> -static void ima_post_create_tmpfile(struct mnt_idmap *idmap,
> +static void ima_post_create_tmpfile(const struct mnt_idmap *idmap,
>                                   struct inode *inode)
>  
>  {
> diff --git a/security/security.c b/security/security.c
> index e3a14c958bc4..4e4ef1c496ad 100644
> --- a/security/security.c
> +++ b/security/security.c
> @@ -1638,7 +1638,7 @@ EXPORT_SYMBOL_GPL(security_inode_create);
>   *
>   * Update inode security data after a tmpfile has been created.
>   */
> -void security_inode_post_create_tmpfile(struct mnt_idmap *idmap,
> +void security_inode_post_create_tmpfile(const struct mnt_idmap *idmap,
>                                       struct inode *inode)
>  {
>       if (unlikely(IS_PRIVATE(inode)))
> 
> -- 
> 2.53.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to