On Tue 01-09-26 14:14:49, 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 +-
>  arch/powerpc/platforms/cell/spufs/inode.c | 2 +-
>  fs/9p/v9fs_vfs.h                          | 2 +-
>  fs/9p/vfs_inode.c                         | 2 +-
>  fs/9p/vfs_inode_dotl.c                    | 2 +-
>  fs/adfs/adfs.h                            | 2 +-
>  fs/adfs/inode.c                           | 2 +-
>  fs/affs/affs.h                            | 2 +-
>  fs/affs/inode.c                           | 2 +-
>  fs/afs/inode.c                            | 2 +-
>  fs/afs/internal.h                         | 2 +-
>  fs/anon_inodes.c                          | 2 +-
>  fs/attr.c                                 | 2 +-
>  fs/bad_inode.c                            | 2 +-
>  fs/btrfs/inode.c                          | 2 +-
>  fs/ceph/inode.c                           | 2 +-
>  fs/ceph/super.h                           | 2 +-
>  fs/coda/coda_linux.h                      | 2 +-
>  fs/coda/inode.c                           | 2 +-
>  fs/configfs/configfs_internal.h           | 2 +-
>  fs/configfs/inode.c                       | 2 +-
>  fs/debugfs/inode.c                        | 2 +-
>  fs/ecryptfs/inode.c                       | 2 +-
>  fs/efivarfs/inode.c                       | 2 +-
>  fs/exfat/exfat_fs.h                       | 2 +-
>  fs/exfat/file.c                           | 2 +-
>  fs/ext2/ext2.h                            | 2 +-
>  fs/ext2/inode.c                           | 2 +-
>  fs/ext4/ext4.h                            | 2 +-
>  fs/ext4/inode.c                           | 2 +-
>  fs/f2fs/f2fs.h                            | 2 +-
>  fs/f2fs/file.c                            | 2 +-
>  fs/fat/fat.h                              | 2 +-
>  fs/fat/file.c                             | 2 +-
>  fs/fuse/dir.c                             | 2 +-
>  fs/gfs2/inode.c                           | 2 +-
>  fs/hfs/hfs_fs.h                           | 2 +-
>  fs/hfs/inode.c                            | 2 +-
>  fs/hfsplus/inode.c                        | 2 +-
>  fs/hostfs/hostfs_kern.c                   | 2 +-
>  fs/hpfs/hpfs_fn.h                         | 2 +-
>  fs/hpfs/inode.c                           | 2 +-
>  fs/hugetlbfs/inode.c                      | 2 +-
>  fs/inode.c                                | 2 +-
>  fs/internal.h                             | 2 +-
>  fs/jffs2/fs.c                             | 2 +-
>  fs/jffs2/os-linux.h                       | 2 +-
>  fs/jfs/file.c                             | 2 +-
>  fs/jfs/jfs_inode.h                        | 2 +-
>  fs/kernfs/inode.c                         | 2 +-
>  fs/kernfs/kernfs-internal.h               | 2 +-
>  fs/libfs.c                                | 4 ++--
>  fs/minix/file.c                           | 2 +-
>  fs/nfs/inode.c                            | 2 +-
>  fs/nfs/namespace.c                        | 2 +-
>  fs/nilfs2/inode.c                         | 2 +-
>  fs/nilfs2/nilfs.h                         | 2 +-
>  fs/ntfs/file.c                            | 2 +-
>  fs/ntfs/inode.h                           | 2 +-
>  fs/ntfs3/file.c                           | 2 +-
>  fs/ntfs3/ntfs_fs.h                        | 2 +-
>  fs/ocfs2/dlmfs/dlmfs.c                    | 2 +-
>  fs/ocfs2/file.c                           | 2 +-
>  fs/ocfs2/file.h                           | 2 +-
>  fs/omfs/file.c                            | 2 +-
>  fs/orangefs/inode.c                       | 2 +-
>  fs/orangefs/orangefs-kernel.h             | 2 +-
>  fs/overlayfs/inode.c                      | 2 +-
>  fs/overlayfs/overlayfs.h                  | 2 +-
>  fs/pidfs.c                                | 2 +-
>  fs/proc/base.c                            | 2 +-
>  fs/proc/generic.c                         | 2 +-
>  fs/proc/internal.h                        | 2 +-
>  fs/proc/proc_sysctl.c                     | 2 +-
>  fs/ramfs/file-nommu.c                     | 4 ++--
>  fs/smb/client/cifsfs.h                    | 2 +-
>  fs/smb/client/inode.c                     | 2 +-
>  fs/tracefs/event_inode.c                  | 2 +-
>  fs/tracefs/inode.c                        | 2 +-
>  fs/ubifs/file.c                           | 2 +-
>  fs/ubifs/ubifs.h                          | 2 +-
>  fs/udf/file.c                             | 2 +-
>  fs/ufs/inode.c                            | 2 +-
>  fs/ufs/ufs.h                              | 2 +-
>  fs/vboxsf/utils.c                         | 2 +-
>  fs/vboxsf/vfsmod.h                        | 2 +-
>  fs/xfs/xfs_iops.c                         | 2 +-
>  fs/zonefs/super.c                         | 2 +-
>  include/linux/fs.h                        | 6 +++---
>  include/linux/lsm_hook_defs.h             | 4 ++--
>  include/linux/nfs_fs.h                    | 2 +-
>  include/linux/security.h                  | 8 ++++----
>  mm/secretmem.c                            | 2 +-
>  mm/shmem.c                                | 2 +-
>  net/socket.c                              | 2 +-
>  security/integrity/evm/evm_main.c         | 4 ++--
>  security/integrity/ima/ima_appraise.c     | 2 +-
>  security/security.c                       | 4 ++--
>  security/selinux/hooks.c                  | 2 +-
>  security/smack/smack_lsm.c                | 2 +-
>  virt/kvm/guest_memfd.c                    | 2 +-
>  102 files changed, 112 insertions(+), 112 deletions(-)
> 
> diff --git a/Documentation/filesystems/locking.rst 
> b/Documentation/filesystems/locking.rst
> index f11bfc2e0c13..6330653287d5 100644
> --- a/Documentation/filesystems/locking.rst
> +++ b/Documentation/filesystems/locking.rst
> @@ -76,7 +76,7 @@ prototypes::
>       void (*truncate) (struct inode *);
>       int (*permission) (const struct mnt_idmap *, struct inode *, int, 
> unsigned int);
>       struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
> -     int (*setattr) (struct mnt_idmap *, struct dentry *, struct iattr *);
> +     int (*setattr) (const struct mnt_idmap *, struct dentry *, struct iattr 
> *);
>       int (*getattr) (const struct mnt_idmap *, const struct path *, struct 
> kstat *, u32, unsigned int);
>       ssize_t (*listxattr) (struct dentry *, char *, size_t);
>       int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, 
> u64 len);
> diff --git a/Documentation/filesystems/vfs.rst 
> b/Documentation/filesystems/vfs.rst
> index 98aefc5d399e..7b9475b1282f 100644
> --- a/Documentation/filesystems/vfs.rst
> +++ b/Documentation/filesystems/vfs.rst
> @@ -430,7 +430,7 @@ As of kernel 2.6.22, the following members are defined:
>                                        struct delayed_call *);
>               int (*permission) (const struct mnt_idmap *, struct inode *, 
> int);
>               struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
> -             int (*setattr) (struct mnt_idmap *, struct dentry *, struct 
> iattr *);
> +             int (*setattr) (const struct mnt_idmap *, struct dentry *, 
> struct iattr *);
>               int (*getattr) (const struct mnt_idmap *, const struct path *, 
> struct kstat *, u32, unsigned int);
>               ssize_t (*listxattr) (struct dentry *, char *, size_t);
>               void (*update_time)(struct inode *inode, enum fs_update_time 
> type,
> diff --git a/arch/powerpc/platforms/cell/spufs/inode.c 
> b/arch/powerpc/platforms/cell/spufs/inode.c
> index 2b54afb31529..a7b2df936c90 100644
> --- a/arch/powerpc/platforms/cell/spufs/inode.c
> +++ b/arch/powerpc/platforms/cell/spufs/inode.c
> @@ -92,7 +92,7 @@ spufs_new_inode(struct super_block *sb, umode_t mode)
>  }
>  
>  static int
> -spufs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +spufs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>             struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/9p/v9fs_vfs.h b/fs/9p/v9fs_vfs.h
> index 1856d91f8703..5e7b60042498 100644
> --- a/fs/9p/v9fs_vfs.h
> +++ b/fs/9p/v9fs_vfs.h
> @@ -74,7 +74,7 @@ int v9fs_file_open(struct inode *inode, struct file *file);
>  int v9fs_uflags2omode(int uflags, int extended);
>  
>  void v9fs_blank_wstat(struct p9_wstat *wstat);
> -int v9fs_vfs_setattr_dotl(struct mnt_idmap *idmap,
> +int v9fs_vfs_setattr_dotl(const struct mnt_idmap *idmap,
>                         struct dentry *dentry, struct iattr *iattr);
>  int v9fs_file_fsync_dotl(struct file *filp, loff_t start, loff_t end,
>                        int datasync);
> diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
> index 0c280342f8e9..c95e653344f6 100644
> --- a/fs/9p/vfs_inode.c
> +++ b/fs/9p/vfs_inode.c
> @@ -1014,7 +1014,7 @@ v9fs_vfs_getattr(const struct mnt_idmap *idmap, const 
> struct path *path,
>   *
>   */
>  
> -static int v9fs_vfs_setattr(struct mnt_idmap *idmap,
> +static int v9fs_vfs_setattr(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct iattr *iattr)
>  {
>       int retval, use_dentry = 0;
> diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
> index e37854ee6346..2cd2898580a9 100644
> --- a/fs/9p/vfs_inode_dotl.c
> +++ b/fs/9p/vfs_inode_dotl.c
> @@ -508,7 +508,7 @@ static int v9fs_mapped_iattr_valid(int iattr_valid)
>   *
>   */
>  
> -int v9fs_vfs_setattr_dotl(struct mnt_idmap *idmap,
> +int v9fs_vfs_setattr_dotl(const struct mnt_idmap *idmap,
>                         struct dentry *dentry, struct iattr *iattr)
>  {
>       int retval, use_dentry = 0;
> diff --git a/fs/adfs/adfs.h b/fs/adfs/adfs.h
> index 0d32b7cd99b4..6003832277f8 100644
> --- a/fs/adfs/adfs.h
> +++ b/fs/adfs/adfs.h
> @@ -144,7 +144,7 @@ struct adfs_discmap {
>  /* Inode stuff */
>  struct inode *adfs_iget(struct super_block *sb, struct object_info *obj);
>  int adfs_write_inode(struct inode *inode, struct writeback_control *wbc);
> -int adfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int adfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr);
>  
>  /* map.c */
> diff --git a/fs/adfs/inode.c b/fs/adfs/inode.c
> index 4ac442d0a8c0..34598b499372 100644
> --- a/fs/adfs/inode.c
> +++ b/fs/adfs/inode.c
> @@ -299,7 +299,7 @@ adfs_iget(struct super_block *sb, struct object_info *obj)
>   * later.
>   */
>  int
> -adfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr 
> *attr)
> +adfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry, struct 
> iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
>       struct super_block *sb = inode->i_sb;
> diff --git a/fs/affs/affs.h b/fs/affs/affs.h
> index 8d4ca16c7891..2518de96a0c8 100644
> --- a/fs/affs/affs.h
> +++ b/fs/affs/affs.h
> @@ -184,7 +184,7 @@ extern int        affs_rename2(const struct mnt_idmap 
> *idmap,
>  /* inode.c */
>  
>  extern struct inode          *affs_new_inode(struct inode *dir);
> -extern int                    affs_setattr(struct mnt_idmap *idmap,
> +extern int                    affs_setattr(const struct mnt_idmap *idmap,
>                                       struct dentry *dentry, struct iattr 
> *attr);
>  extern void                   affs_evict_inode(struct inode *inode);
>  extern struct inode          *affs_iget(struct super_block *sb,
> diff --git a/fs/affs/inode.c b/fs/affs/inode.c
> index d4a3f381c4bc..2a48d7422091 100644
> --- a/fs/affs/inode.c
> +++ b/fs/affs/inode.c
> @@ -213,7 +213,7 @@ affs_write_inode(struct inode *inode, struct 
> writeback_control *wbc)
>  }
>  
>  int
> -affs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr 
> *attr)
> +affs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry, struct 
> iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
>       int error;
> diff --git a/fs/afs/inode.c b/fs/afs/inode.c
> index 7b8a2adc3f59..8e6ca6b45c6b 100644
> --- a/fs/afs/inode.c
> +++ b/fs/afs/inode.c
> @@ -759,7 +759,7 @@ static const struct afs_operation_ops 
> afs_setattr_operation = {
>  /*
>   * set the attributes of an inode
>   */
> -int afs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int afs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr)
>  {
>       const unsigned int supported =
> diff --git a/fs/afs/internal.h b/fs/afs/internal.h
> index 7a8cdde9e0ad..0bd851f00bbe 100644
> --- a/fs/afs/internal.h
> +++ b/fs/afs/internal.h
> @@ -1260,7 +1260,7 @@ extern struct inode *afs_iget(struct afs_operation *, 
> struct afs_vnode_param *);
>  extern struct inode *afs_root_iget(struct super_block *, struct key *);
>  extern int afs_getattr(const struct mnt_idmap *idmap, const struct path *,
>                      struct kstat *, u32, unsigned int);
> -extern int afs_setattr(struct mnt_idmap *idmap, struct dentry *, struct 
> iattr *);
> +extern int afs_setattr(const struct mnt_idmap *idmap, struct dentry *, 
> struct iattr *);
>  extern void afs_evict_inode(struct inode *);
>  extern int afs_drop_inode(struct inode *);
>  
> diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
> index d4a7e0b67289..8f07c8d9bda0 100644
> --- a/fs/anon_inodes.c
> +++ b/fs/anon_inodes.c
> @@ -57,7 +57,7 @@ int anon_inode_getattr(const struct mnt_idmap *idmap, const 
> struct path *path,
>       return 0;
>  }
>  
> -int anon_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int anon_inode_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *attr)
>  {
>       return -EOPNOTSUPP;
> diff --git a/fs/attr.c b/fs/attr.c
> index 1845d145fe4c..9706d370f34a 100644
> --- a/fs/attr.c
> +++ b/fs/attr.c
> @@ -424,7 +424,7 @@ EXPORT_SYMBOL(may_setattr);
>   * permissions. On non-idmapped mounts or if permission checking is to be
>   * performed on the raw inode simply pass @nop_mnt_idmap.
>   */
> -int notify_change(struct mnt_idmap *idmap, struct dentry *dentry,
> +int notify_change(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr, struct delegated_inode *delegated_inode)
>  {
>       struct inode *inode = dentry->d_inode;
> diff --git a/fs/bad_inode.c b/fs/bad_inode.c
> index e740b4e658bf..bea9f4876ee0 100644
> --- a/fs/bad_inode.c
> +++ b/fs/bad_inode.c
> @@ -102,7 +102,7 @@ static int bad_inode_getattr(const struct mnt_idmap 
> *idmap,
>       return -EIO;
>  }
>  
> -static int bad_inode_setattr(struct mnt_idmap *idmap,
> +static int bad_inode_setattr(const struct mnt_idmap *idmap,
>                            struct dentry *direntry, struct iattr *attrs)
>  {
>       return -EIO;
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index da143f9376ee..149ec3b23063 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -5479,7 +5479,7 @@ static int btrfs_setsize(struct inode *inode, struct 
> iattr *attr)
>       return ret;
>  }
>  
> -static int btrfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int btrfs_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                        struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
> index 185d713218e6..a695dba82554 100644
> --- a/fs/ceph/inode.c
> +++ b/fs/ceph/inode.c
> @@ -2921,7 +2921,7 @@ int __ceph_setattr(const struct mnt_idmap *idmap, 
> struct inode *inode,
>  /*
>   * setattr
>   */
> -int ceph_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ceph_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ceph/super.h b/fs/ceph/super.h
> index 0a5e3916e855..a033331bb151 100644
> --- a/fs/ceph/super.h
> +++ b/fs/ceph/super.h
> @@ -1175,7 +1175,7 @@ struct ceph_iattr {
>  
>  extern int __ceph_setattr(const struct mnt_idmap *idmap, struct inode *inode,
>                         struct iattr *attr, struct ceph_iattr *cia);
> -extern int ceph_setattr(struct mnt_idmap *idmap,
> +extern int ceph_setattr(const struct mnt_idmap *idmap,
>                       struct dentry *dentry, struct iattr *attr);
>  extern int ceph_getattr(const struct mnt_idmap *idmap,
>                       const struct path *path, struct kstat *stat,
> diff --git a/fs/coda/coda_linux.h b/fs/coda/coda_linux.h
> index 5dc9e392079f..0c0d5f81653c 100644
> --- a/fs/coda/coda_linux.h
> +++ b/fs/coda/coda_linux.h
> @@ -51,7 +51,7 @@ int coda_permission(const struct mnt_idmap *idmap, struct 
> inode *inode,
>  int coda_revalidate_inode(struct inode *);
>  int coda_getattr(const struct mnt_idmap *, const struct path *, struct kstat 
> *,
>                u32, unsigned int);
> -int coda_setattr(struct mnt_idmap *, struct dentry *, struct iattr *);
> +int coda_setattr(const struct mnt_idmap *, struct dentry *, struct iattr *);
>  
>  /* this file:  helpers */
>  char *coda_f2s(struct CodaFid *f);
> diff --git a/fs/coda/inode.c b/fs/coda/inode.c
> index f83ebd94c6be..c449954e23c2 100644
> --- a/fs/coda/inode.c
> +++ b/fs/coda/inode.c
> @@ -304,7 +304,7 @@ int coda_getattr(const struct mnt_idmap *idmap, const 
> struct path *path,
>       return err;
>  }
>  
> -int coda_setattr(struct mnt_idmap *idmap, struct dentry *de,
> +int coda_setattr(const struct mnt_idmap *idmap, struct dentry *de,
>                struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(de);
> diff --git a/fs/configfs/configfs_internal.h b/fs/configfs/configfs_internal.h
> index 63d70dc05444..860f1b695921 100644
> --- a/fs/configfs/configfs_internal.h
> +++ b/fs/configfs/configfs_internal.h
> @@ -76,7 +76,7 @@ extern int configfs_make_dirent(struct configfs_dirent *, 
> struct dentry *,
>  extern int configfs_dirent_is_ready(struct configfs_dirent *);
>  
>  extern const unsigned char * configfs_get_name(struct configfs_dirent *sd);
> -extern int configfs_setattr(struct mnt_idmap *idmap,
> +extern int configfs_setattr(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct iattr *iattr);
>  
>  extern struct dentry *configfs_pin_fs(void);
> diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c
> index 68290fe0e374..6ba125d25c66 100644
> --- a/fs/configfs/inode.c
> +++ b/fs/configfs/inode.c
> @@ -32,7 +32,7 @@ static const struct inode_operations 
> configfs_inode_operations ={
>       .setattr        = configfs_setattr,
>  };
>  
> -int configfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int configfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                    struct iattr *iattr)
>  {
>       struct inode * inode = d_inode(dentry);
> diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
> index e054e62919ec..287ec424ceed 100644
> --- a/fs/debugfs/inode.c
> +++ b/fs/debugfs/inode.c
> @@ -42,7 +42,7 @@ static bool debugfs_enabled __ro_after_init = 
> IS_ENABLED(CONFIG_DEBUG_FS_ALLOW_A
>   * so that we can use the file mode as part of a heuristic to determine 
> whether
>   * to lock down individual files.
>   */
> -static int debugfs_setattr(struct mnt_idmap *idmap,
> +static int debugfs_setattr(const struct mnt_idmap *idmap,
>                          struct dentry *dentry, struct iattr *ia)
>  {
>       int ret;
> diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
> index e70a8d73d137..48e520960d66 100644
> --- a/fs/ecryptfs/inode.c
> +++ b/fs/ecryptfs/inode.c
> @@ -869,7 +869,7 @@ ecryptfs_permission(const struct mnt_idmap *idmap, struct 
> inode *inode,
>   * All other metadata changes will be passed right to the lower filesystem,
>   * and we will just update our inode to look like the lower.
>   */
> -static int ecryptfs_setattr(struct mnt_idmap *idmap,
> +static int ecryptfs_setattr(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct iattr *ia)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/efivarfs/inode.c b/fs/efivarfs/inode.c
> index d87091b92776..07602cd5d33c 100644
> --- a/fs/efivarfs/inode.c
> +++ b/fs/efivarfs/inode.c
> @@ -170,7 +170,7 @@ efivarfs_fileattr_set(const struct mnt_idmap *idmap,
>  }
>  
>  /* copy of simple_setattr except that it doesn't do i_size updates */
> -static int efivarfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int efivarfs_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                  struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h
> index 5165a0df068a..5acfe7ef57d6 100644
> --- a/fs/exfat/exfat_fs.h
> +++ b/fs/exfat/exfat_fs.h
> @@ -555,7 +555,7 @@ int exfat_trim_fs(struct inode *inode, struct 
> fstrim_range *range);
>  /* file.c */
>  extern const struct file_operations exfat_file_operations;
>  int __exfat_truncate(struct inode *inode);
> -int exfat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int exfat_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr);
>  int exfat_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                 struct kstat *stat, unsigned int request_mask,
> diff --git a/fs/exfat/file.c b/fs/exfat/file.c
> index c072a0663e69..3867e78c2312 100644
> --- a/fs/exfat/file.c
> +++ b/fs/exfat/file.c
> @@ -347,7 +347,7 @@ int exfat_fileattr_get(struct dentry *dentry, struct 
> file_kattr *fa)
>       return 0;
>  }
>  
> -int exfat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int exfat_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr)
>  {
>       struct exfat_sb_info *sbi = EXFAT_SB(dentry->d_sb);
> diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> index f4bb8b888052..cf2796e5703e 100644
> --- a/fs/ext2/ext2.h
> +++ b/fs/ext2/ext2.h
> @@ -739,7 +739,7 @@ extern int ext2_sync_inode_metadata(struct inode *, 
> struct writeback_control *);
>  extern void ext2_evict_inode(struct inode *);
>  void ext2_write_failed(struct address_space *mapping, loff_t to);
>  extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, 
> int);
> -extern int ext2_setattr (struct mnt_idmap *, struct dentry *, struct iattr 
> *);
> +extern int ext2_setattr (const struct mnt_idmap *, struct dentry *, struct 
> iattr *);
>  extern int ext2_getattr (const struct mnt_idmap *, const struct path *,
>                        struct kstat *, u32, unsigned int);
>  extern void ext2_set_inode_flags(struct inode *inode);
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index d4b2a2dec35e..b52ded333aa9 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -1617,7 +1617,7 @@ int ext2_getattr(const struct mnt_idmap *idmap, const 
> struct path *path,
>       return 0;
>  }
>  
> -int ext2_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ext2_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index eb7cf19f606a..cbc59d03ca81 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -3179,7 +3179,7 @@ extern struct inode *__ext4_iget(struct super_block 
> *sb, unsigned long ino,
>  
>  extern int  ext4_write_inode(struct inode *, struct writeback_control *);
>  extern int  ext4_sync_inode_metadata(struct inode *, struct 
> writeback_control *);
> -extern int  ext4_setattr(struct mnt_idmap *, struct dentry *,
> +extern int  ext4_setattr(const struct mnt_idmap *, struct dentry *,
>                        struct iattr *);
>  extern u32  ext4_dio_alignment(struct inode *inode);
>  extern int  ext4_getattr(const struct mnt_idmap *, const struct path *,
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 045f5385f26e..3c39bb945821 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -6006,7 +6006,7 @@ static void ext4_wait_for_tail_page_commit(struct inode 
> *inode)
>   *
>   * Called with inode->i_rwsem down.
>   */
> -int ext4_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ext4_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 06538f5fd725..128813d4f6e3 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -3850,7 +3850,7 @@ int f2fs_truncate_blocks(struct inode *inode, u64 from, 
> bool lock);
>  int f2fs_truncate(struct inode *inode);
>  int f2fs_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                struct kstat *stat, u32 request_mask, unsigned int flags);
> -int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int f2fs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr);
>  int f2fs_truncate_hole(struct inode *inode, pgoff_t pg_start, pgoff_t 
> pg_end);
>  void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count);
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 267a3a191d54..fb8b03a9972d 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -1121,7 +1121,7 @@ static void __setattr_copy(const struct mnt_idmap 
> *idmap,
>  #define __setattr_copy setattr_copy
>  #endif
>  
> -int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int f2fs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/fat/fat.h b/fs/fat/fat.h
> index 202f209a544b..dbbcfc90a9c2 100644
> --- a/fs/fat/fat.h
> +++ b/fs/fat/fat.h
> @@ -404,7 +404,7 @@ extern long fat_generic_ioctl(struct file *filp, unsigned 
> int cmd,
>                             unsigned long arg);
>  extern const struct file_operations fat_file_operations;
>  extern const struct inode_operations fat_file_inode_operations;
> -extern int fat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +extern int fat_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *attr);
>  extern void fat_truncate_blocks(struct inode *inode, loff_t offset);
>  extern int fat_getattr(const struct mnt_idmap *idmap,
> diff --git a/fs/fat/file.c b/fs/fat/file.c
> index b37bc637945f..2c6aee9f0305 100644
> --- a/fs/fat/file.c
> +++ b/fs/fat/file.c
> @@ -514,7 +514,7 @@ static int fat_allow_set_time(const struct mnt_idmap 
> *idmap,
>  /* valid file mode bits */
>  #define FAT_VALID_MODE       (S_IFREG | S_IFDIR | S_IRWXUGO)
>  
> -int fat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int fat_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr)
>  {
>       struct msdos_sb_info *sbi = MSDOS_SB(dentry->d_sb);
> diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
> index dd267d9498bc..6d23878cfae5 100644
> --- a/fs/fuse/dir.c
> +++ b/fs/fuse/dir.c
> @@ -2324,7 +2324,7 @@ int fuse_do_setattr(const struct mnt_idmap *idmap, 
> struct dentry *dentry,
>       return err;
>  }
>  
> -static int fuse_setattr(struct mnt_idmap *idmap, struct dentry *entry,
> +static int fuse_setattr(const struct mnt_idmap *idmap, struct dentry *entry,
>                       struct iattr *attr)
>  {
>       struct inode *inode = d_inode(entry);
> diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
> index 5ddac2f50f30..a040da86d8ed 100644
> --- a/fs/gfs2/inode.c
> +++ b/fs/gfs2/inode.c
> @@ -2095,7 +2095,7 @@ static int setattr_chown(struct inode *inode, struct 
> iattr *attr)
>   * Returns: errno
>   */
>  
> -static int gfs2_setattr(struct mnt_idmap *idmap,
> +static int gfs2_setattr(const struct mnt_idmap *idmap,
>                       struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/hfs/hfs_fs.h b/fs/hfs/hfs_fs.h
> index e250f87a5e33..fdfa5d303d5e 100644
> --- a/fs/hfs/hfs_fs.h
> +++ b/fs/hfs/hfs_fs.h
> @@ -212,7 +212,7 @@ extern struct inode *hfs_new_inode(struct inode *dir, 
> const struct qstr *name,
>  extern void hfs_inode_write_fork(struct inode *inode, struct hfs_extent *ext,
>                                __be32 *log_size, __be32 *phys_size);
>  extern int hfs_write_inode(struct inode *inode, struct writeback_control 
> *wbc);
> -extern int hfs_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +extern int hfs_inode_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                            struct iattr *attr);
>  extern void hfs_inode_read_fork(struct inode *inode, struct hfs_extent *ext,
>                               __be32 __log_size, __be32 phys_size,
> diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
> index 2aef3c36a150..c81314f668ac 100644
> --- a/fs/hfs/inode.c
> +++ b/fs/hfs/inode.c
> @@ -643,7 +643,7 @@ static int hfs_file_release(struct inode *inode, struct 
> file *file)
>       return 0;
>  }
>  
> -int hfs_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int hfs_inode_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                     struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
> index 2807b29c7028..aed0866499b2 100644
> --- a/fs/hfsplus/inode.c
> +++ b/fs/hfsplus/inode.c
> @@ -305,7 +305,7 @@ static int hfsplus_file_release(struct inode *inode, 
> struct file *file)
>       return 0;
>  }
>  
> -static int hfsplus_setattr(struct mnt_idmap *idmap,
> +static int hfsplus_setattr(const struct mnt_idmap *idmap,
>                          struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
> index c8ad58be047e..613146e76dec 100644
> --- a/fs/hostfs/hostfs_kern.c
> +++ b/fs/hostfs/hostfs_kern.c
> @@ -801,7 +801,7 @@ static int hostfs_permission(const struct mnt_idmap 
> *idmap,
>       return err;
>  }
>  
> -static int hostfs_setattr(struct mnt_idmap *idmap,
> +static int hostfs_setattr(const struct mnt_idmap *idmap,
>                         struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h
> index 237c1c23e855..a398dd8bdf30 100644
> --- a/fs/hpfs/hpfs_fn.h
> +++ b/fs/hpfs/hpfs_fn.h
> @@ -280,7 +280,7 @@ void hpfs_init_inode(struct inode *);
>  void hpfs_read_inode(struct inode *);
>  void hpfs_write_inode(struct inode *);
>  void hpfs_write_inode_nolock(struct inode *);
> -int hpfs_setattr(struct mnt_idmap *, struct dentry *, struct iattr *);
> +int hpfs_setattr(const struct mnt_idmap *, struct dentry *, struct iattr *);
>  void hpfs_write_if_changed(struct inode *);
>  void hpfs_evict_inode(struct inode *);
>  
> diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
> index 1b4fcf760aad..396773d0b669 100644
> --- a/fs/hpfs/inode.c
> +++ b/fs/hpfs/inode.c
> @@ -257,7 +257,7 @@ void hpfs_write_inode_nolock(struct inode *i)
>       brelse(bh);
>  }
>  
> -int hpfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int hpfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
> index 0b95be14d3ee..6656807ce437 100644
> --- a/fs/hugetlbfs/inode.c
> +++ b/fs/hugetlbfs/inode.c
> @@ -828,7 +828,7 @@ static long hugetlbfs_fallocate(struct file *file, int 
> mode, loff_t offset,
>       return error;
>  }
>  
> -static int hugetlbfs_setattr(struct mnt_idmap *idmap,
> +static int hugetlbfs_setattr(const struct mnt_idmap *idmap,
>                            struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/inode.c b/fs/inode.c
> index 99f1aab89eae..bd9808f07eb8 100644
> --- a/fs/inode.c
> +++ b/fs/inode.c
> @@ -2356,7 +2356,7 @@ int dentry_needs_remove_privs(const struct mnt_idmap 
> *idmap,
>       return mask;
>  }
>  
> -static int __remove_privs(struct mnt_idmap *idmap,
> +static int __remove_privs(const struct mnt_idmap *idmap,
>                         struct dentry *dentry, int kill)
>  {
>       struct iattr newattrs;
> diff --git a/fs/internal.h b/fs/internal.h
> index 88d9296c2a48..2b8cffc22fb3 100644
> --- a/fs/internal.h
> +++ b/fs/internal.h
> @@ -359,7 +359,7 @@ struct dentry *find_next_child(struct dentry *parent, 
> struct dentry *prev);
>  int anon_inode_getattr(const struct mnt_idmap *idmap, const struct path 
> *path,
>                      struct kstat *stat, u32 request_mask,
>                      unsigned int query_flags);
> -int anon_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int anon_inode_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *attr);
>  void pidfs_get_root(struct path *path);
>  void nsfs_get_root(struct path *path);
> diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c
> index 6ada8369a762..05cf860307c7 100644
> --- a/fs/jffs2/fs.c
> +++ b/fs/jffs2/fs.c
> @@ -190,7 +190,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr 
> *iattr)
>       return 0;
>  }
>  
> -int jffs2_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int jffs2_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h
> index 86ab014a349c..bff2134d771d 100644
> --- a/fs/jffs2/os-linux.h
> +++ b/fs/jffs2/os-linux.h
> @@ -164,7 +164,7 @@ long jffs2_ioctl(struct file *, unsigned int, unsigned 
> long);
>  extern const struct inode_operations jffs2_symlink_inode_operations;
>  
>  /* fs.c */
> -int jffs2_setattr (struct mnt_idmap *, struct dentry *, struct iattr *);
> +int jffs2_setattr (const struct mnt_idmap *, struct dentry *, struct iattr 
> *);
>  int jffs2_do_setattr (struct inode *, struct iattr *);
>  struct inode *jffs2_iget(struct super_block *, unsigned long);
>  void jffs2_evict_inode (struct inode *);
> diff --git a/fs/jfs/file.c b/fs/jfs/file.c
> index 246568cb9a6e..2f5bb79c0591 100644
> --- a/fs/jfs/file.c
> +++ b/fs/jfs/file.c
> @@ -89,7 +89,7 @@ static int jfs_release(struct inode *inode, struct file 
> *file)
>       return 0;
>  }
>  
> -int jfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int jfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h
> index 88cfc3886282..5a118b07fbff 100644
> --- a/fs/jfs/jfs_inode.h
> +++ b/fs/jfs/jfs_inode.h
> @@ -28,7 +28,7 @@ extern struct dentry *jfs_fh_to_parent(struct super_block 
> *sb, struct fid *fid,
>       int fh_len, int fh_type);
>  extern void jfs_set_inode_flags(struct inode *);
>  extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, 
> int);
> -extern int jfs_setattr(struct mnt_idmap *, struct dentry *, struct iattr *);
> +extern int jfs_setattr(const struct mnt_idmap *, struct dentry *, struct 
> iattr *);
>  
>  extern const struct address_space_operations jfs_aops;
>  extern const struct inode_operations jfs_dir_inode_operations;
> diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
> index 6a92aa789ce5..b9dbb504d226 100644
> --- a/fs/kernfs/inode.c
> +++ b/fs/kernfs/inode.c
> @@ -107,7 +107,7 @@ int kernfs_setattr(struct kernfs_node *kn, const struct 
> iattr *iattr)
>       return ret;
>  }
>  
> -int kernfs_iop_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int kernfs_iop_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h
> index 8af7849f2c9c..d0c68ec2d236 100644
> --- a/fs/kernfs/kernfs-internal.h
> +++ b/fs/kernfs/kernfs-internal.h
> @@ -173,7 +173,7 @@ extern const struct xattr_handler * const 
> kernfs_xattr_handlers[];
>  void kernfs_evict_inode(struct inode *inode);
>  int kernfs_iop_permission(const struct mnt_idmap *idmap,
>                         struct inode *inode, int mask);
> -int kernfs_iop_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int kernfs_iop_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *iattr);
>  int kernfs_iop_getattr(const struct mnt_idmap *idmap,
>                      const struct path *path, struct kstat *stat,
> diff --git a/fs/libfs.c b/fs/libfs.c
> index b70977b10a7c..8e2cc627bc7f 100644
> --- a/fs/libfs.c
> +++ b/fs/libfs.c
> @@ -913,7 +913,7 @@ EXPORT_SYMBOL(simple_rename);
>   * on simple regular filesystems.  Anything that needs to change on-disk
>   * or wire state on size changes needs its own setattr method.
>   */
> -int simple_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int simple_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> @@ -1727,7 +1727,7 @@ static struct dentry *empty_dir_lookup(struct inode 
> *dir, struct dentry *dentry,
>       return ERR_PTR(-ENOENT);
>  }
>  
> -static int empty_dir_setattr(struct mnt_idmap *idmap,
> +static int empty_dir_setattr(const struct mnt_idmap *idmap,
>                            struct dentry *dentry, struct iattr *attr)
>  {
>       return -EPERM;
> diff --git a/fs/minix/file.c b/fs/minix/file.c
> index 02aabbdb5dea..c0929fc38fbc 100644
> --- a/fs/minix/file.c
> +++ b/fs/minix/file.c
> @@ -23,7 +23,7 @@ const struct file_operations minix_file_operations = {
>       .splice_read    = filemap_splice_read,
>  };
>  
> -static int minix_setattr(struct mnt_idmap *idmap,
> +static int minix_setattr(const struct mnt_idmap *idmap,
>                        struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
> index b114488715fb..3c9b2ec4e244 100644
> --- a/fs/nfs/inode.c
> +++ b/fs/nfs/inode.c
> @@ -690,7 +690,7 @@ EXPORT_SYMBOL_GPL(nfs_update_delegated_mtime);
>  #define NFS_VALID_ATTRS 
> (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_SIZE|ATTR_ATIME|ATTR_ATIME_SET|ATTR_MTIME|ATTR_MTIME_SET|ATTR_FILE|ATTR_OPEN)
>  
>  int
> -nfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +nfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>           struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c
> index 17f54d79efa7..c50d59c52c50 100644
> --- a/fs/nfs/namespace.c
> +++ b/fs/nfs/namespace.c
> @@ -235,7 +235,7 @@ nfs_namespace_getattr(const struct mnt_idmap *idmap,
>  }
>  
>  static int
> -nfs_namespace_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +nfs_namespace_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                     struct iattr *attr)
>  {
>       if (NFS_FH(d_inode(dentry))->size != 0)
> diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
> index 9342f651bf9b..8953719c4950 100644
> --- a/fs/nilfs2/inode.c
> +++ b/fs/nilfs2/inode.c
> @@ -904,7 +904,7 @@ void nilfs_evict_inode(struct inode *inode)
>        */
>  }
>  
> -int nilfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int nilfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *iattr)
>  {
>       struct nilfs_transaction_info ti;
> diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h
> index 829df7be11fe..28d35b2fa7f7 100644
> --- a/fs/nilfs2/nilfs.h
> +++ b/fs/nilfs2/nilfs.h
> @@ -299,7 +299,7 @@ struct inode *nilfs_iget_for_shadow(struct inode *inode);
>  extern void nilfs_update_inode(struct inode *, struct buffer_head *, int);
>  extern void nilfs_truncate(struct inode *);
>  extern void nilfs_evict_inode(struct inode *);
> -extern int nilfs_setattr(struct mnt_idmap *, struct dentry *,
> +extern int nilfs_setattr(const struct mnt_idmap *, struct dentry *,
>                        struct iattr *);
>  extern void nilfs_write_failed(struct address_space *mapping, loff_t to);
>  int nilfs_permission(const struct mnt_idmap *idmap, struct inode *inode,
> diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c
> index 40e01704ea8f..da85cbae2420 100644
> --- a/fs/ntfs/file.c
> +++ b/fs/ntfs/file.c
> @@ -294,7 +294,7 @@ static int ntfs_setattr_size(struct inode *vi, struct 
> iattr *attr)
>   * NOTE: Changes in inode size are not supported yet for compressed or
>   * encrypted files.
>   */
> -int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ntfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *vi = d_inode(dentry);
> diff --git a/fs/ntfs/inode.h b/fs/ntfs/inode.h
> index 9cf923911825..45a396c97846 100644
> --- a/fs/ntfs/inode.h
> +++ b/fs/ntfs/inode.h
> @@ -330,7 +330,7 @@ int ntfs_read_inode_mount(struct inode *vi);
>  int ntfs_show_options(struct seq_file *sf, struct dentry *root);
>  int ntfs_truncate_vfs(struct inode *vi, loff_t new_size, loff_t i_size);
>  
> -int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ntfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr);
>  int ntfs_getattr(const struct mnt_idmap *idmap, const struct path *path,
>               struct kstat *stat, unsigned int request_mask,
> diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
> index f4d08346d25d..52e1cd969e06 100644
> --- a/fs/ntfs3/file.c
> +++ b/fs/ntfs3/file.c
> @@ -703,7 +703,7 @@ static long ntfs_fallocate(struct file *file, int mode, 
> loff_t vbo, loff_t len)
>  /*
>   * ntfs_setattr - inode_operations::setattr
>   */
> -int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ntfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
> index 262b7ff2d6e1..ea24126c70db 100644
> --- a/fs/ntfs3/ntfs_fs.h
> +++ b/fs/ntfs3/ntfs_fs.h
> @@ -555,7 +555,7 @@ int ntfs_fileattr_set(const struct mnt_idmap *idmap, 
> struct dentry *dentry,
>                     struct file_kattr *fa);
>  int ntfs_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                struct kstat *stat, u32 request_mask, u32 flags);
> -int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ntfs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                struct iattr *attr);
>  int ntfs_file_open(struct inode *inode, struct file *file);
>  int ntfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
> diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
> index fef79b21a4a5..d3bfcada3e3b 100644
> --- a/fs/ocfs2/dlmfs/dlmfs.c
> +++ b/fs/ocfs2/dlmfs/dlmfs.c
> @@ -188,7 +188,7 @@ static int dlmfs_file_release(struct inode *inode,
>   * We do ->setattr() just to override size changes.  Our size is the size
>   * of the LVB and nothing else.
>   */
> -static int dlmfs_file_setattr(struct mnt_idmap *idmap,
> +static int dlmfs_file_setattr(const struct mnt_idmap *idmap,
>                             struct dentry *dentry, struct iattr *attr)
>  {
>       int error;
> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
> index befc6ebb2a06..62f45a1b5ca1 100644
> --- a/fs/ocfs2/file.c
> +++ b/fs/ocfs2/file.c
> @@ -1117,7 +1117,7 @@ static int ocfs2_extend_file(struct inode *inode,
>       return ret;
>  }
>  
> -int ocfs2_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ocfs2_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr)
>  {
>       int status = 0, size_change;
> diff --git a/fs/ocfs2/file.h b/fs/ocfs2/file.h
> index b51c8e77dad7..97492ee5789e 100644
> --- a/fs/ocfs2/file.h
> +++ b/fs/ocfs2/file.h
> @@ -50,7 +50,7 @@ int ocfs2_extend_no_holes(struct inode *inode, struct 
> buffer_head *di_bh,
>                         u64 new_i_size, u64 zero_to);
>  int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
>                     loff_t zero_to);
> -int ocfs2_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ocfs2_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr);
>  int ocfs2_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                 struct kstat *stat, u32 request_mask, unsigned int flags);
> diff --git a/fs/omfs/file.c b/fs/omfs/file.c
> index 28f3b113340e..79a413f1dc0d 100644
> --- a/fs/omfs/file.c
> +++ b/fs/omfs/file.c
> @@ -338,7 +338,7 @@ const struct file_operations omfs_file_operations = {
>       .splice_read = filemap_splice_read,
>  };
>  
> -static int omfs_setattr(struct mnt_idmap *idmap,
> +static int omfs_setattr(const struct mnt_idmap *idmap,
>                       struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c
> index 100669ee5862..75ac1e485e35 100644
> --- a/fs/orangefs/inode.c
> +++ b/fs/orangefs/inode.c
> @@ -828,7 +828,7 @@ int __orangefs_setattr_mode(struct dentry *dentry, struct 
> iattr *iattr)
>  /*
>   * Change attributes of an object referenced by dentry.
>   */
> -int orangefs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int orangefs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                    struct iattr *iattr)
>  {
>       int ret;
> diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h
> index 3bf01c0c763b..348fe340c5d5 100644
> --- a/fs/orangefs/orangefs-kernel.h
> +++ b/fs/orangefs/orangefs-kernel.h
> @@ -352,7 +352,7 @@ struct inode *orangefs_new_inode(struct super_block *sb,
>  
>  int __orangefs_setattr(struct inode *, struct iattr *);
>  int __orangefs_setattr_mode(struct dentry *dentry, struct iattr *iattr);
> -int orangefs_setattr(struct mnt_idmap *, struct dentry *, struct iattr *);
> +int orangefs_setattr(const struct mnt_idmap *, struct dentry *, struct iattr 
> *);
>  
>  int orangefs_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                    struct kstat *stat, u32 request_mask, unsigned int flags);
> diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
> index b765780686e6..622e9bb833af 100644
> --- a/fs/overlayfs/inode.c
> +++ b/fs/overlayfs/inode.c
> @@ -18,7 +18,7 @@
>  #include "overlayfs.h"
>  
>  
> -int ovl_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ovl_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr)
>  {
>       int err;
> diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
> index 02a822dc8e5e..f0eac9ae1e38 100644
> --- a/fs/overlayfs/overlayfs.h
> +++ b/fs/overlayfs/overlayfs.h
> @@ -948,7 +948,7 @@ static inline bool ovl_force_readonly(struct ovl_fs *ofs)
>  /* xattr.c */
>  
>  const struct xattr_handler * const *ovl_xattr_handlers(struct ovl_fs *ofs);
> -int ovl_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ovl_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr);
>  int ovl_getattr(const struct mnt_idmap *idmap, const struct path *path,
>               struct kstat *stat, u32 request_mask, unsigned int flags);
> diff --git a/fs/pidfs.c b/fs/pidfs.c
> index 38868ac99950..c37c17bcdbdc 100644
> --- a/fs/pidfs.c
> +++ b/fs/pidfs.c
> @@ -823,7 +823,7 @@ static struct vfsmount *pidfs_mnt __ro_after_init;
>   * implemented. Let's reject it completely until we have a clean
>   * permission concept for pidfds.
>   */
> -static int pidfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int pidfs_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                        struct iattr *attr)
>  {
>       return anon_inode_setattr(idmap, dentry, attr);
> diff --git a/fs/proc/base.c b/fs/proc/base.c
> index 3278c37e5cde..5a18636ba81f 100644
> --- a/fs/proc/base.c
> +++ b/fs/proc/base.c
> @@ -702,7 +702,7 @@ static int proc_pid_syscall(struct seq_file *m, struct 
> pid_namespace *ns,
>  /*                       Here the fs part begins                        */
>  /************************************************************************/
>  
> -int proc_nochmod_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int proc_nochmod_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                struct iattr *attr)
>  {
>       int error;
> diff --git a/fs/proc/generic.c b/fs/proc/generic.c
> index 4c4f1e63f68f..2b1971da4a85 100644
> --- a/fs/proc/generic.c
> +++ b/fs/proc/generic.c
> @@ -117,7 +117,7 @@ static bool pde_subdir_insert(struct proc_dir_entry *dir,
>       return true;
>  }
>  
> -static int proc_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int proc_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/proc/internal.h b/fs/proc/internal.h
> index 706fae7d30be..b9aaac41c283 100644
> --- a/fs/proc/internal.h
> +++ b/fs/proc/internal.h
> @@ -260,7 +260,7 @@ extern int proc_pid_statm(struct seq_file *, struct 
> pid_namespace *,
>  extern const struct dentry_operations pid_dentry_operations;
>  extern int pid_getattr(const struct mnt_idmap *, const struct path *,
>                      struct kstat *, u32, unsigned int);
> -int proc_nochmod_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int proc_nochmod_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                       struct iattr *attr);
>  extern void proc_pid_evict_inode(struct proc_inode *);
>  extern struct inode *proc_pid_make_inode(struct super_block *, struct 
> task_struct *, umode_t);
> diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
> index bd6730000b27..d1cfd2941359 100644
> --- a/fs/proc/proc_sysctl.c
> +++ b/fs/proc/proc_sysctl.c
> @@ -817,7 +817,7 @@ static int proc_sys_permission(const struct mnt_idmap 
> *idmap,
>       return error;
>  }
>  
> -static int proc_sys_setattr(struct mnt_idmap *idmap,
> +static int proc_sys_setattr(const struct mnt_idmap *idmap,
>                           struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
> index fb471bf88ab7..7ed6fba134c6 100644
> --- a/fs/ramfs/file-nommu.c
> +++ b/fs/ramfs/file-nommu.c
> @@ -22,7 +22,7 @@
>  #include <linux/uaccess.h>
>  #include "internal.h"
>  
> -static int ramfs_nommu_setattr(struct mnt_idmap *, struct dentry *, struct 
> iattr *);
> +static int ramfs_nommu_setattr(const struct mnt_idmap *, struct dentry *, 
> struct iattr *);
>  static unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
>                                                  unsigned long addr,
>                                                  unsigned long len,
> @@ -161,7 +161,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t 
> newsize, loff_t size)
>   * handle a change of attributes
>   * - we're specifically interested in a change of size
>   */
> -static int ramfs_nommu_setattr(struct mnt_idmap *idmap,
> +static int ramfs_nommu_setattr(const struct mnt_idmap *idmap,
>                              struct dentry *dentry, struct iattr *ia)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/smb/client/cifsfs.h b/fs/smb/client/cifsfs.h
> index c0adc5219213..51692e14c4dd 100644
> --- a/fs/smb/client/cifsfs.h
> +++ b/fs/smb/client/cifsfs.h
> @@ -80,7 +80,7 @@ int cifs_revalidate_mapping(struct inode *inode);
>  int cifs_zap_mapping(struct inode *inode);
>  int cifs_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                struct kstat *stat, u32 request_mask, unsigned int flags);
> -int cifs_setattr(struct mnt_idmap *idmap, struct dentry *direntry,
> +int cifs_setattr(const struct mnt_idmap *idmap, struct dentry *direntry,
>                struct iattr *attrs);
>  int cifs_fiemap(struct inode *inode, struct fiemap_extent_info *fei, u64 
> start,
>               u64 len);
> diff --git a/fs/smb/client/inode.c b/fs/smb/client/inode.c
> index 132f9e072b77..248b7891e687 100644
> --- a/fs/smb/client/inode.c
> +++ b/fs/smb/client/inode.c
> @@ -3549,7 +3549,7 @@ cifs_setattr_nounix(struct dentry *direntry, struct 
> iattr *attrs)
>  }
>  
>  int
> -cifs_setattr(struct mnt_idmap *idmap, struct dentry *direntry,
> +cifs_setattr(const struct mnt_idmap *idmap, struct dentry *direntry,
>            struct iattr *attrs)
>  {
>       struct cifs_sb_info *cifs_sb = CIFS_SB(direntry->d_sb);
> diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c
> index 6e3513b13cfa..6f6daac88621 100644
> --- a/fs/tracefs/event_inode.c
> +++ b/fs/tracefs/event_inode.c
> @@ -182,7 +182,7 @@ static void update_attr(struct eventfs_attr *attr, struct 
> iattr *iattr)
>       }
>  }
>  
> -static int eventfs_set_attr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int eventfs_set_attr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                           struct iattr *iattr)
>  {
>       const struct eventfs_entry *entry;
> diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
> index 44448f1a2bb1..5020365ca704 100644
> --- a/fs/tracefs/inode.c
> +++ b/fs/tracefs/inode.c
> @@ -207,7 +207,7 @@ static int tracefs_getattr(const struct mnt_idmap *idmap,
>       return 0;
>  }
>  
> -static int tracefs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int tracefs_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                          struct iattr *attr)
>  {
>       unsigned int ia_valid = attr->ia_valid;
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index bfc1bd0203ad..244b835fc82a 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1251,7 +1251,7 @@ static int do_setattr(struct ubifs_info *c, struct 
> inode *inode,
>       return err;
>  }
>  
> -int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ubifs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr)
>  {
>       int err;
> diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
> index d455a67fe411..b85b45a0564b 100644
> --- a/fs/ubifs/ubifs.h
> +++ b/fs/ubifs/ubifs.h
> @@ -2020,7 +2020,7 @@ int ubifs_calc_dark(const struct ubifs_info *c, int 
> spc);
>  
>  /* file.c */
>  int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync);
> -int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ubifs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                 struct iattr *attr);
>  int ubifs_update_time(struct inode *inode, enum fs_update_time type,
>                     unsigned int flags);
> diff --git a/fs/udf/file.c b/fs/udf/file.c
> index 57d11606a2a7..02e9314818dc 100644
> --- a/fs/udf/file.c
> +++ b/fs/udf/file.c
> @@ -212,7 +212,7 @@ const struct file_operations udf_file_operations = {
>       .setlease               = generic_setlease,
>  };
>  
> -static int udf_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int udf_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
> index 440d014cc5ed..c9ff8673fa66 100644
> --- a/fs/ufs/inode.c
> +++ b/fs/ufs/inode.c
> @@ -1195,7 +1195,7 @@ static int ufs_truncate(struct inode *inode, loff_t 
> size)
>       return err;
>  }
>  
> -int ufs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int ufs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>               struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
> index 788e025056b2..541566f5b5fb 100644
> --- a/fs/ufs/ufs.h
> +++ b/fs/ufs/ufs.h
> @@ -120,7 +120,7 @@ extern struct inode *ufs_iget(struct super_block *, 
> unsigned long);
>  extern int ufs_write_inode (struct inode *, struct writeback_control *);
>  extern int ufs_sync_inode (struct inode *);
>  extern void ufs_evict_inode (struct inode *);
> -extern int ufs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +extern int ufs_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                      struct iattr *attr);
>  
>  /* namei.c */
> diff --git a/fs/vboxsf/utils.c b/fs/vboxsf/utils.c
> index 6a5a47a32075..8775fbee1ce6 100644
> --- a/fs/vboxsf/utils.c
> +++ b/fs/vboxsf/utils.c
> @@ -258,7 +258,7 @@ int vboxsf_getattr(const struct mnt_idmap *idmap, const 
> struct path *path,
>       return 0;
>  }
>  
> -int vboxsf_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int vboxsf_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  struct iattr *iattr)
>  {
>       struct vboxsf_inode *sf_i = VBOXSF_I(d_inode(dentry));
> diff --git a/fs/vboxsf/vfsmod.h b/fs/vboxsf/vfsmod.h
> index 9c713b8e7aa2..59a4e44c4005 100644
> --- a/fs/vboxsf/vfsmod.h
> +++ b/fs/vboxsf/vfsmod.h
> @@ -101,7 +101,7 @@ int vboxsf_inode_revalidate(struct dentry *dentry);
>  int vboxsf_getattr(const struct mnt_idmap *idmap, const struct path *path,
>                  struct kstat *kstat, u32 request_mask,
>                  unsigned int query_flags);
> -int vboxsf_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +int vboxsf_setattr(const struct mnt_idmap *idmap, struct dentry *dentry,
>                  struct iattr *iattr);
>  struct shfl_string *vboxsf_path_from_dentry(struct vboxsf_sbi *sbi,
>                                           struct dentry *dentry);
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index 19fd83cea18b..535e8a9e071e 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -1130,7 +1130,7 @@ xfs_vn_setattr_size(
>  
>  STATIC int
>  xfs_vn_setattr(
> -     struct mnt_idmap        *idmap,
> +     const struct mnt_idmap  *idmap,
>       struct dentry           *dentry,
>       struct iattr            *iattr)
>  {
> diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
> index ff43d6d1ea30..b97f1f2b8dda 100644
> --- a/fs/zonefs/super.c
> +++ b/fs/zonefs/super.c
> @@ -533,7 +533,7 @@ static int zonefs_show_options(struct seq_file *seq, 
> struct dentry *root)
>       return 0;
>  }
>  
> -static int zonefs_inode_setattr(struct mnt_idmap *idmap,
> +static int zonefs_inode_setattr(const struct mnt_idmap *idmap,
>                               struct dentry *dentry, struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index c79fd3776bbf..55d8e7e473ff 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2012,7 +2012,7 @@ struct inode_operations {
>                     umode_t,dev_t);
>       int (*rename) (const struct mnt_idmap *, struct inode *, struct dentry 
> *,
>                       struct inode *, struct dentry *, unsigned int);
> -     int (*setattr) (struct mnt_idmap *, struct dentry *, struct iattr *);
> +     int (*setattr) (const struct mnt_idmap *, struct dentry *, struct iattr 
> *);
>       int (*getattr) (const struct mnt_idmap *, const struct path *,
>                       struct kstat *, u32, unsigned int);
>       ssize_t (*listxattr) (struct dentry *, char *, size_t);
> @@ -2707,7 +2707,7 @@ static inline int bmap(struct inode *inode,  sector_t 
> *block)
>  }
>  #endif
>  
> -int notify_change(struct mnt_idmap *, struct dentry *,
> +int notify_change(const struct mnt_idmap *, struct dentry *,
>                 struct iattr *, struct delegated_inode *);
>  int inode_permission(const struct mnt_idmap *, struct inode *, int);
>  int generic_permission(const struct mnt_idmap *, struct inode *, int);
> @@ -3261,7 +3261,7 @@ extern int dcache_dir_open(struct inode *, struct file 
> *);
>  extern int dcache_dir_close(struct inode *, struct file *);
>  extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
>  extern int dcache_readdir(struct file *, struct dir_context *);
> -extern int simple_setattr(struct mnt_idmap *, struct dentry *,
> +extern int simple_setattr(const struct mnt_idmap *, struct dentry *,
>                         struct iattr *);
>  extern int simple_getattr(const struct mnt_idmap *, const struct path *,
>                         struct kstat *, u32, unsigned int);
> diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
> index ad05971e6137..194084f60746 100644
> --- a/include/linux/lsm_hook_defs.h
> +++ b/include/linux/lsm_hook_defs.h
> @@ -140,9 +140,9 @@ LSM_HOOK(int, 0, inode_readlink, struct dentry *dentry)
>  LSM_HOOK(int, 0, inode_follow_link, struct dentry *dentry, struct inode 
> *inode,
>        bool rcu)
>  LSM_HOOK(int, 0, inode_permission, struct inode *inode, int mask)
> -LSM_HOOK(int, 0, inode_setattr, struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +LSM_HOOK(int, 0, inode_setattr, const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>        struct iattr *attr)
> -LSM_HOOK(void, LSM_RET_VOID, inode_post_setattr, struct mnt_idmap *idmap,
> +LSM_HOOK(void, LSM_RET_VOID, inode_post_setattr, const struct mnt_idmap 
> *idmap,
>        struct dentry *dentry, int ia_valid)
>  LSM_HOOK(int, 0, inode_getattr, const struct path *path)
>  LSM_HOOK(int, 0, inode_xattr_skipcap, const char *name)
> diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
> index 7b307dea7ce7..d2c716322c6f 100644
> --- a/include/linux/nfs_fs.h
> +++ b/include/linux/nfs_fs.h
> @@ -450,7 +450,7 @@ extern int nfs_clear_invalid_mapping(struct address_space 
> *mapping);
>  extern bool nfs_mapping_need_revalidate_inode(struct inode *inode);
>  extern int nfs_revalidate_mapping(struct inode *inode, struct address_space 
> *mapping);
>  extern int nfs_revalidate_mapping_rcu(struct inode *inode);
> -extern int nfs_setattr(struct mnt_idmap *, struct dentry *, struct iattr *);
> +extern int nfs_setattr(const struct mnt_idmap *, struct dentry *, struct 
> iattr *);
>  extern void nfs_setattr_update_inode(struct inode *inode, struct iattr 
> *attr, struct nfs_fattr *);
>  extern void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr);
>  extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context 
> *ctx);
> diff --git a/include/linux/security.h b/include/linux/security.h
> index d4100396da27..c7691feb8f8e 100644
> --- a/include/linux/security.h
> +++ b/include/linux/security.h
> @@ -422,9 +422,9 @@ int security_inode_readlink(struct dentry *dentry);
>  int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
>                              bool rcu);
>  int security_inode_permission(struct inode *inode, int mask);
> -int security_inode_setattr(struct mnt_idmap *idmap,
> +int security_inode_setattr(const struct mnt_idmap *idmap,
>                          struct dentry *dentry, struct iattr *attr);
> -void security_inode_post_setattr(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +void security_inode_post_setattr(const struct mnt_idmap *idmap, struct 
> dentry *dentry,
>                                int ia_valid);
>  int security_inode_getattr(const struct path *path);
>  int security_inode_setxattr(const struct mnt_idmap *idmap,
> @@ -979,7 +979,7 @@ static inline int security_inode_permission(struct inode 
> *inode, int mask)
>       return 0;
>  }
>  
> -static inline int security_inode_setattr(struct mnt_idmap *idmap,
> +static inline int security_inode_setattr(const struct mnt_idmap *idmap,
>                                        struct dentry *dentry,
>                                        struct iattr *attr)
>  {
> @@ -987,7 +987,7 @@ static inline int security_inode_setattr(struct mnt_idmap 
> *idmap,
>  }
>  
>  static inline void
> -security_inode_post_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +security_inode_post_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                           int ia_valid)
>  { }
>  
> diff --git a/mm/secretmem.c b/mm/secretmem.c
> index d29865075b6e..7bb6e426ac6e 100644
> --- a/mm/secretmem.c
> +++ b/mm/secretmem.c
> @@ -161,7 +161,7 @@ const struct address_space_operations secretmem_aops = {
>       .migrate_folio  = secretmem_migrate_folio,
>  };
>  
> -static int secretmem_setattr(struct mnt_idmap *idmap,
> +static int secretmem_setattr(const struct mnt_idmap *idmap,
>                            struct dentry *dentry, struct iattr *iattr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/mm/shmem.c b/mm/shmem.c
> index b27e5f23dc93..2c086c2b604e 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -1326,7 +1326,7 @@ static int shmem_getattr(const struct mnt_idmap *idmap,
>       return 0;
>  }
>  
> -static int shmem_setattr(struct mnt_idmap *idmap,
> +static int shmem_setattr(const struct mnt_idmap *idmap,
>                        struct dentry *dentry, struct iattr *attr)
>  {
>       struct inode *inode = d_inode(dentry);
> diff --git a/net/socket.c b/net/socket.c
> index 052273ad081a..c0ab6a3ad8ed 100644
> --- a/net/socket.c
> +++ b/net/socket.c
> @@ -670,7 +670,7 @@ static ssize_t sockfs_listxattr(struct dentry *dentry, 
> char *buffer,
>       return used;
>  }
>  
> -static int sockfs_setattr(struct mnt_idmap *idmap,
> +static int sockfs_setattr(const struct mnt_idmap *idmap,
>                         struct dentry *dentry, struct iattr *iattr)
>  {
>       int err = simple_setattr(&nop_mnt_idmap, dentry, iattr);
> diff --git a/security/integrity/evm/evm_main.c 
> b/security/integrity/evm/evm_main.c
> index 10a0b39dd9b7..9bfea858df2d 100644
> --- a/security/integrity/evm/evm_main.c
> +++ b/security/integrity/evm/evm_main.c
> @@ -956,7 +956,7 @@ static int evm_attr_change(const struct mnt_idmap *idmap,
>   * Permit update of file attributes when files have a valid EVM signature,
>   * except in the case of them having an immutable portable signature.
>   */
> -static int evm_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int evm_inode_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                            struct iattr *attr)
>  {
>       unsigned int ia_valid = attr->ia_valid;
> @@ -1008,7 +1008,7 @@ static int evm_inode_setattr(struct mnt_idmap *idmap, 
> struct dentry *dentry,
>   * This function is called from notify_change(), which expects the caller
>   * to lock the inode's i_mutex.
>   */
> -static void evm_inode_post_setattr(struct mnt_idmap *idmap,
> +static void evm_inode_post_setattr(const struct mnt_idmap *idmap,
>                                  struct dentry *dentry, int ia_valid)
>  {
>       if (!evm_revalidate_status(NULL))
> diff --git a/security/integrity/ima/ima_appraise.c 
> b/security/integrity/ima/ima_appraise.c
> index cfc20c63a814..659b71e77ac8 100644
> --- a/security/integrity/ima/ima_appraise.c
> +++ b/security/integrity/ima/ima_appraise.c
> @@ -634,7 +634,7 @@ void ima_update_xattr(struct ima_iint_cache *iint, struct 
> file *file)
>   * This function is called from notify_change(), which expects the caller
>   * to lock the inode's i_mutex.
>   */
> -static void ima_inode_post_setattr(struct mnt_idmap *idmap,
> +static void ima_inode_post_setattr(const struct mnt_idmap *idmap,
>                                  struct dentry *dentry, int ia_valid)
>  {
>       struct inode *inode = d_backing_inode(dentry);
> diff --git a/security/security.c b/security/security.c
> index 9a3ae6746fb3..304048f26d03 100644
> --- a/security/security.c
> +++ b/security/security.c
> @@ -1855,7 +1855,7 @@ int security_inode_permission(struct inode *inode, int 
> mask)
>   *
>   * Return: Returns 0 if permission is granted.
>   */
> -int security_inode_setattr(struct mnt_idmap *idmap,
> +int security_inode_setattr(const struct mnt_idmap *idmap,
>                          struct dentry *dentry, struct iattr *attr)
>  {
>       if (unlikely(IS_PRIVATE(d_backing_inode(dentry))))
> @@ -1872,7 +1872,7 @@ EXPORT_SYMBOL_GPL(security_inode_setattr);
>   *
>   * Update inode security field after successful setting file attributes.
>   */
> -void security_inode_post_setattr(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +void security_inode_post_setattr(const struct mnt_idmap *idmap, struct 
> dentry *dentry,
>                                int ia_valid)
>  {
>       if (unlikely(IS_PRIVATE(d_backing_inode(dentry))))
> diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
> index b7c6eba08fdc..1e59fb67dffb 100644
> --- a/security/selinux/hooks.c
> +++ b/security/selinux/hooks.c
> @@ -3297,7 +3297,7 @@ static int selinux_inode_permission(struct inode 
> *inode, int requested)
>       return rc;
>  }
>  
> -static int selinux_inode_setattr(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +static int selinux_inode_setattr(const struct mnt_idmap *idmap, struct 
> dentry *dentry,
>                                struct iattr *iattr)
>  {
>       const struct cred *cred = current_cred();
> diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
> index df4fc6ff26aa..bb78569b3d5b 100644
> --- a/security/smack/smack_lsm.c
> +++ b/security/smack/smack_lsm.c
> @@ -1270,7 +1270,7 @@ static int smack_inode_permission(struct inode *inode, 
> int mask)
>   *
>   * Returns 0 if access is permitted, an error code otherwise
>   */
> -static int smack_inode_setattr(struct mnt_idmap *idmap, struct dentry 
> *dentry,
> +static int smack_inode_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                              struct iattr *iattr)
>  {
>       struct smk_audit_info ad;
> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c
> index 625e62e1a031..5c084d5393a6 100644
> --- a/virt/kvm/guest_memfd.c
> +++ b/virt/kvm/guest_memfd.c
> @@ -506,7 +506,7 @@ static const struct address_space_operations 
> kvm_gmem_aops = {
>  #endif
>  };
>  
> -static int kvm_gmem_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
> +static int kvm_gmem_setattr(const struct mnt_idmap *idmap, struct dentry 
> *dentry,
>                           struct iattr *attr)
>  {
>       return -EINVAL;
> 
> -- 
> 2.53.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to