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

