On Tue 01-09-26 14:14:41, 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/9p/acl.c                           | 2 +-
>  fs/9p/acl.h                           | 2 +-
>  fs/ecryptfs/inode.c                   | 2 +-
>  fs/fuse/acl.c                         | 2 +-
>  fs/fuse/fuse_i.h                      | 2 +-
>  fs/internal.h                         | 4 ++--
>  fs/ntfs/ea.c                          | 2 +-
>  fs/ntfs/ea.h                          | 2 +-
>  fs/ntfs3/ntfs_fs.h                    | 2 +-
>  fs/ntfs3/xattr.c                      | 2 +-
>  fs/overlayfs/overlayfs.h              | 2 +-
>  fs/posix_acl.c                        | 6 +++---
>  fs/smb/client/cifsacl.c               | 2 +-
>  fs/smb/client/cifsproto.h             | 2 +-
>  fs/xattr.c                            | 2 +-
>  include/linux/fs.h                    | 2 +-
>  include/linux/posix_acl.h             | 4 ++--
>  19 files changed, 23 insertions(+), 23 deletions(-)
> 
> diff --git a/Documentation/filesystems/locking.rst 
> b/Documentation/filesystems/locking.rst
> index b95cd4992896..167988321a8c 100644
> --- a/Documentation/filesystems/locking.rst
> +++ b/Documentation/filesystems/locking.rst
> @@ -91,7 +91,7 @@ prototypes::
>       int (*fileattr_set)(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct file_kattr *fa);
>       int (*fileattr_get)(struct dentry *dentry, struct file_kattr *fa);
> -     struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
> +     struct posix_acl * (*get_acl)(const struct mnt_idmap *, struct dentry 
> *, int);
>       struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
>  
>  locking rules:
> diff --git a/Documentation/filesystems/vfs.rst 
> b/Documentation/filesystems/vfs.rst
> index d0dd2be3885b..6adb1061a9b6 100644
> --- a/Documentation/filesystems/vfs.rst
> +++ b/Documentation/filesystems/vfs.rst
> @@ -439,7 +439,7 @@ As of kernel 2.6.22, the following members are defined:
>               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);
> -             struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry 
> *, int);
> +             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,
>                                   struct dentry *dentry, struct file_kattr 
> *fa);
> diff --git a/fs/9p/acl.c b/fs/9p/acl.c
> index d09a41336d0d..c6c7c47d32b9 100644
> --- a/fs/9p/acl.c
> +++ b/fs/9p/acl.c
> @@ -140,7 +140,7 @@ struct posix_acl *v9fs_iop_get_inode_acl(struct inode 
> *inode, int type, bool rcu
>  
>  }
>  
> -struct posix_acl *v9fs_iop_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *v9fs_iop_get_acl(const struct mnt_idmap *idmap,
>                                  struct dentry *dentry, int type)
>  {
>       struct v9fs_session_info *v9ses;
> diff --git a/fs/9p/acl.h b/fs/9p/acl.h
> index 7de74704c465..2d1b24abcd3f 100644
> --- a/fs/9p/acl.h
> +++ b/fs/9p/acl.h
> @@ -10,7 +10,7 @@
>  int v9fs_get_acl(struct inode *inode, struct p9_fid *fid);
>  struct posix_acl *v9fs_iop_get_inode_acl(struct inode *inode, int type,
>                                  bool rcu);
> -struct posix_acl *v9fs_iop_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *v9fs_iop_get_acl(const struct mnt_idmap *idmap,
>                                         struct dentry *dentry, int type);
>  int v9fs_iop_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                    struct posix_acl *acl, int type);
> diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
> index 1e5146485214..bd1187661d6d 100644
> --- a/fs/ecryptfs/inode.c
> +++ b/fs/ecryptfs/inode.c
> @@ -1090,7 +1090,7 @@ static int ecryptfs_fileattr_set(const struct mnt_idmap 
> *idmap,
>       return rc;
>  }
>  
> -static struct posix_acl *ecryptfs_get_acl(struct mnt_idmap *idmap,
> +static struct posix_acl *ecryptfs_get_acl(const struct mnt_idmap *idmap,
>                                         struct dentry *dentry, int type)
>  {
>       return vfs_get_acl(idmap, ecryptfs_dentry_to_lower(dentry),
> diff --git a/fs/fuse/acl.c b/fs/fuse/acl.c
> index c3813fff4f27..738abed9a816 100644
> --- a/fs/fuse/acl.c
> +++ b/fs/fuse/acl.c
> @@ -62,7 +62,7 @@ static inline bool fuse_no_acl(const struct fuse_conn *fc,
>       return !fc->posix_acl && (i_user_ns(inode) != &init_user_ns);
>  }
>  
> -struct posix_acl *fuse_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *fuse_get_acl(const struct mnt_idmap *idmap,
>                              struct dentry *dentry, int type)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
> index 561ada21ea86..9bf4c738bd74 100644
> --- a/fs/fuse/fuse_i.h
> +++ b/fs/fuse/fuse_i.h
> @@ -1205,7 +1205,7 @@ extern const struct xattr_handler * const 
> fuse_xattr_handlers[];
>  
>  struct posix_acl;
>  struct posix_acl *fuse_get_inode_acl(struct inode *inode, int type, bool 
> rcu);
> -struct posix_acl *fuse_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *fuse_get_acl(const struct mnt_idmap *idmap,
>                              struct dentry *dentry, int type);
>  int fuse_set_acl(const struct mnt_idmap *, struct dentry *dentry,
>                struct posix_acl *acl, int type);
> diff --git a/fs/internal.h b/fs/internal.h
> index 8ba0a1613d20..8a1c7c05c5a2 100644
> --- a/fs/internal.h
> +++ b/fs/internal.h
> @@ -304,7 +304,7 @@ int may_write_xattr(const struct mnt_idmap *idmap, struct 
> inode *inode);
>  #ifdef CONFIG_FS_POSIX_ACL
>  int do_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>              const char *acl_name, const void *kvalue, size_t size);
> -ssize_t do_get_acl(struct mnt_idmap *idmap, struct dentry *dentry,
> +ssize_t do_get_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  const char *acl_name, void *kvalue, size_t size);
>  #else
>  static inline int do_set_acl(const struct mnt_idmap *idmap,
> @@ -313,7 +313,7 @@ static inline int do_set_acl(const struct mnt_idmap 
> *idmap,
>  {
>       return -EOPNOTSUPP;
>  }
> -static inline ssize_t do_get_acl(struct mnt_idmap *idmap,
> +static inline ssize_t do_get_acl(const struct mnt_idmap *idmap,
>                                struct dentry *dentry, const char *acl_name,
>                                void *kvalue, size_t size)
>  {
> diff --git a/fs/ntfs/ea.c b/fs/ntfs/ea.c
> index 063cc15f1626..ed31f0e9f5d2 100644
> --- a/fs/ntfs/ea.c
> +++ b/fs/ntfs/ea.c
> @@ -954,7 +954,7 @@ const struct xattr_handler * const ntfs_xattr_handlers[] 
> = {
>  // clang-format on
>  
>  #ifdef CONFIG_NTFS_FS_POSIX_ACL
> -struct posix_acl *ntfs_get_acl(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +struct posix_acl *ntfs_get_acl(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              int type)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ntfs/ea.h b/fs/ntfs/ea.h
> index 6d98e7487a2c..690fafe181fb 100644
> --- a/fs/ntfs/ea.h
> +++ b/fs/ntfs/ea.h
> @@ -17,7 +17,7 @@ int ntfs_ea_set_wsl_inode(struct inode *inode, dev_t rdev, 
> __le16 *ea_size,
>  ssize_t ntfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
>  
>  #ifdef CONFIG_NTFS_FS_POSIX_ACL
> -struct posix_acl *ntfs_get_acl(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +struct posix_acl *ntfs_get_acl(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              int type);
>  int ntfs_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct posix_acl *acl, int type);
> diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
> index 0a5e81d420f0..d89609a17886 100644
> --- a/fs/ntfs3/ntfs_fs.h
> +++ b/fs/ntfs3/ntfs_fs.h
> @@ -963,7 +963,7 @@ unsigned long ntfs_names_hash(const u16 *name, size_t 
> len, const u16 *upcase,
>  
>  /* globals from xattr.c */
>  #ifdef CONFIG_NTFS3_FS_POSIX_ACL
> -struct posix_acl *ntfs_get_acl(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +struct posix_acl *ntfs_get_acl(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              int type);
>  int ntfs_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct posix_acl *acl, int type);
> diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c
> index 2d17b80999ca..941d516ab8dd 100644
> --- a/fs/ntfs3/xattr.c
> +++ b/fs/ntfs3/xattr.c
> @@ -543,7 +543,7 @@ static noinline int ntfs_set_ea(struct inode *inode, 
> const char *name,
>  /*
>   * ntfs_get_acl - inode_operations::get_acl
>   */
> -struct posix_acl *ntfs_get_acl(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +struct posix_acl *ntfs_get_acl(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              int type)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
> index 8b335993bf56..1759221dcad5 100644
> --- a/fs/overlayfs/overlayfs.h
> +++ b/fs/overlayfs/overlayfs.h
> @@ -814,7 +814,7 @@ static inline struct posix_acl *ovl_get_inode_acl(struct 
> inode *inode, int type,
>  {
>       return do_ovl_get_acl(&nop_mnt_idmap, inode, type, rcu, true);
>  }
> -static inline struct posix_acl *ovl_get_acl(struct mnt_idmap *idmap,
> +static inline struct posix_acl *ovl_get_acl(const struct mnt_idmap *idmap,
>                                           struct dentry *dentry, int type)
>  {
>       return do_ovl_get_acl(idmap, d_inode(dentry), type, false, false);
> diff --git a/fs/posix_acl.c b/fs/posix_acl.c
> index cec7fb557278..fe77934ea8f2 100644
> --- a/fs/posix_acl.c
> +++ b/fs/posix_acl.c
> @@ -118,7 +118,7 @@ void forget_all_cached_acls(struct inode *inode)
>  }
>  EXPORT_SYMBOL(forget_all_cached_acls);
>  
> -static struct posix_acl *__get_acl(struct mnt_idmap *idmap,
> +static struct posix_acl *__get_acl(const struct mnt_idmap *idmap,
>                                  struct dentry *dentry, struct inode *inode,
>                                  int type)
>  {
> @@ -1168,7 +1168,7 @@ EXPORT_SYMBOL_GPL(vfs_set_acl);
>   *
>   * Return: On success POSIX ACLs in VFS format, on error negative errno.
>   */
> -struct posix_acl *vfs_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *vfs_get_acl(const struct mnt_idmap *idmap,
>                             struct dentry *dentry, const char *acl_name)
>  {
>       struct inode *inode = d_inode(dentry);
> @@ -1286,7 +1286,7 @@ int do_set_acl(const struct mnt_idmap *idmap, struct 
> dentry *dentry,
>       return error;
>  }
>  
> -ssize_t do_get_acl(struct mnt_idmap *idmap, struct dentry *dentry,
> +ssize_t do_get_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  const char *acl_name, void *kvalue, size_t size)
>  {
>       ssize_t error;
> diff --git a/fs/smb/client/cifsacl.c b/fs/smb/client/cifsacl.c
> index 0a05b6b0be5f..084a4460ca19 100644
> --- a/fs/smb/client/cifsacl.c
> +++ b/fs/smb/client/cifsacl.c
> @@ -1867,7 +1867,7 @@ id_mode_to_cifs_acl(struct inode *inode, const char 
> *path, __u64 *pnmode,
>       return rc;
>  }
>  
> -struct posix_acl *cifs_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *cifs_get_acl(const struct mnt_idmap *idmap,
>                              struct dentry *dentry, int type)
>  {
>  #if defined(CONFIG_CIFS_ALLOW_INSECURE_LEGACY) && defined(CONFIG_CIFS_POSIX)
> diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h
> index 565697c233a9..e6beff8aafe0 100644
> --- a/fs/smb/client/cifsproto.h
> +++ b/fs/smb/client/cifsproto.h
> @@ -212,7 +212,7 @@ struct smb_ntsd *get_cifs_acl(struct cifs_sb_info 
> *cifs_sb,
>  struct smb_ntsd *get_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb,
>                                    const struct cifs_fid *cifsfid,
>                                    u32 *pacllen, u32 info);
> -struct posix_acl *cifs_get_acl(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +struct posix_acl *cifs_get_acl(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              int type);
>  int cifs_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct posix_acl *acl, int type);
> diff --git a/fs/xattr.c b/fs/xattr.c
> index 758a7ffe3a86..d9f035610f0b 100644
> --- a/fs/xattr.c
> +++ b/fs/xattr.c
> @@ -787,7 +787,7 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, 
> name,
>   * Extended attribute GET operations
>   */
>  static ssize_t
> -do_getxattr(struct mnt_idmap *idmap, struct dentry *d,
> +do_getxattr(const struct mnt_idmap *idmap, struct dentry *d,
>       struct kernel_xattr_ctx *ctx)
>  {
>       ssize_t error;
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 9186d9bb2697..9809e7c3aa0d 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2026,7 +2026,7 @@ struct inode_operations {
>                          umode_t create_mode);
>       int (*tmpfile) (struct mnt_idmap *, struct inode *,
>                       struct file *, umode_t);
> -     struct posix_acl *(*get_acl)(struct mnt_idmap *, struct dentry *,
> +     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);
> diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h
> index 9220fe0c965d..caf500bed993 100644
> --- a/include/linux/posix_acl.h
> +++ b/include/linux/posix_acl.h
> @@ -107,7 +107,7 @@ static inline void cache_no_acl(struct inode *inode)
>  
>  int vfs_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>               const char *acl_name, struct posix_acl *kacl);
> -struct posix_acl *vfs_get_acl(struct mnt_idmap *idmap,
> +struct posix_acl *vfs_get_acl(const struct mnt_idmap *idmap,
>                             struct dentry *dentry, const char *acl_name);
>  int vfs_remove_acl(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  const char *acl_name);
> @@ -148,7 +148,7 @@ static inline int vfs_set_acl(const struct mnt_idmap 
> *idmap,
>       return -EOPNOTSUPP;
>  }
>  
> -static inline struct posix_acl *vfs_get_acl(struct mnt_idmap *idmap,
> +static inline struct posix_acl *vfs_get_acl(const struct mnt_idmap *idmap,
>                                           struct dentry *dentry,
>                                           const char *acl_name)
>  {
> 
> -- 
> 2.53.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to