Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fs: port ->symlink() to pass mnt_idmap

Convert to struct mnt_idmap.

Last cycle we merged the necessary infrastructure in
256c8aed2b42 ("fs: introduce dedicated idmap type for mounts").
This is just the conversion to struct mnt_idmap.

Currently we still pass around the plain namespace that was attached to a
mount. This is in general pretty convenient but it makes it easy to
conflate namespaces that are relevant on the filesystem with namespaces
that are relevent on the mount level. Especially for non-vfs developers
without detailed knowledge in this area this can be a potential source for
bugs.

Once the conversion to struct mnt_idmap is done all helpers down to the
really low-level helpers will take a struct mnt_idmap argument instead of
two namespace arguments. This way it becomes impossible to conflate the two
eliminating the possibility of any bugs. All of the vfs and all filesystems
only operate on struct mnt_idmap.

Acked-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>

+60 -54
+1 -1
Documentation/filesystems/locking.rst
··· 60 60 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); 61 61 int (*link) (struct dentry *,struct inode *,struct dentry *); 62 62 int (*unlink) (struct inode *,struct dentry *); 63 - int (*symlink) (struct inode *,struct dentry *,const char *); 63 + int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *,const char *); 64 64 int (*mkdir) (struct inode *,struct dentry *,umode_t); 65 65 int (*rmdir) (struct inode *,struct dentry *); 66 66 int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
+1 -1
Documentation/filesystems/vfs.rst
··· 425 425 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); 426 426 int (*link) (struct dentry *,struct inode *,struct dentry *); 427 427 int (*unlink) (struct inode *,struct dentry *); 428 - int (*symlink) (struct user_namespace *, struct inode *,struct dentry *,const char *); 428 + int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *,const char *); 429 429 int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *,umode_t); 430 430 int (*rmdir) (struct inode *,struct dentry *); 431 431 int (*mknod) (struct user_namespace *, struct inode *,struct dentry *,umode_t,dev_t);
+2 -2
fs/9p/vfs_inode.c
··· 1300 1300 1301 1301 /** 1302 1302 * v9fs_vfs_symlink - helper function to create symlinks 1303 - * @mnt_userns: The user namespace of the mount 1303 + * @idmap: idmap of the mount 1304 1304 * @dir: directory inode containing symlink 1305 1305 * @dentry: dentry for symlink 1306 1306 * @symname: symlink data ··· 1310 1310 */ 1311 1311 1312 1312 static int 1313 - v9fs_vfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 1313 + v9fs_vfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 1314 1314 struct dentry *dentry, const char *symname) 1315 1315 { 1316 1316 p9_debug(P9_DEBUG_VFS, " %lu,%pd,%s\n",
+1 -1
fs/9p/vfs_inode_dotl.c
··· 688 688 } 689 689 690 690 static int 691 - v9fs_vfs_symlink_dotl(struct user_namespace *mnt_userns, struct inode *dir, 691 + v9fs_vfs_symlink_dotl(struct mnt_idmap *idmap, struct inode *dir, 692 692 struct dentry *dentry, const char *symname) 693 693 { 694 694 int err;
+1 -1
fs/affs/affs.h
··· 174 174 extern int affs_rmdir(struct inode *dir, struct dentry *dentry); 175 175 extern int affs_link(struct dentry *olddentry, struct inode *dir, 176 176 struct dentry *dentry); 177 - extern int affs_symlink(struct user_namespace *mnt_userns, 177 + extern int affs_symlink(struct mnt_idmap *idmap, 178 178 struct inode *dir, struct dentry *dentry, 179 179 const char *symname); 180 180 extern int affs_rename2(struct user_namespace *mnt_userns,
+1 -1
fs/affs/namei.c
··· 313 313 } 314 314 315 315 int 316 - affs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 316 + affs_symlink(struct mnt_idmap *idmap, struct inode *dir, 317 317 struct dentry *dentry, const char *symname) 318 318 { 319 319 struct super_block *sb = dir->i_sb;
+2 -2
fs/afs/dir.c
··· 36 36 static int afs_unlink(struct inode *dir, struct dentry *dentry); 37 37 static int afs_link(struct dentry *from, struct inode *dir, 38 38 struct dentry *dentry); 39 - static int afs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 39 + static int afs_symlink(struct mnt_idmap *idmap, struct inode *dir, 40 40 struct dentry *dentry, const char *content); 41 41 static int afs_rename(struct user_namespace *mnt_userns, struct inode *old_dir, 42 42 struct dentry *old_dentry, struct inode *new_dir, ··· 1760 1760 /* 1761 1761 * create a symlink in an AFS filesystem 1762 1762 */ 1763 - static int afs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 1763 + static int afs_symlink(struct mnt_idmap *idmap, struct inode *dir, 1764 1764 struct dentry *dentry, const char *content) 1765 1765 { 1766 1766 struct afs_operation *op;
+2 -2
fs/autofs/root.c
··· 11 11 #include "autofs_i.h" 12 12 13 13 static int autofs_dir_permission(struct user_namespace *, struct inode *, int); 14 - static int autofs_dir_symlink(struct user_namespace *, struct inode *, 14 + static int autofs_dir_symlink(struct mnt_idmap *, struct inode *, 15 15 struct dentry *, const char *); 16 16 static int autofs_dir_unlink(struct inode *, struct dentry *); 17 17 static int autofs_dir_rmdir(struct inode *, struct dentry *); ··· 563 563 return generic_permission(mnt_userns, inode, mask); 564 564 } 565 565 566 - static int autofs_dir_symlink(struct user_namespace *mnt_userns, 566 + static int autofs_dir_symlink(struct mnt_idmap *idmap, 567 567 struct inode *dir, struct dentry *dentry, 568 568 const char *symname) 569 569 {
+1 -1
fs/bad_inode.c
··· 51 51 return -EIO; 52 52 } 53 53 54 - static int bad_inode_symlink(struct user_namespace *mnt_userns, 54 + static int bad_inode_symlink(struct mnt_idmap *idmap, 55 55 struct inode *dir, struct dentry *dentry, 56 56 const char *symname) 57 57 {
+2 -1
fs/btrfs/inode.c
··· 9758 9758 return ret; 9759 9759 } 9760 9760 9761 - static int btrfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 9761 + static int btrfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 9762 9762 struct dentry *dentry, const char *symname) 9763 9763 { 9764 + struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 9764 9765 struct btrfs_fs_info *fs_info = btrfs_sb(dir->i_sb); 9765 9766 struct btrfs_trans_handle *trans; 9766 9767 struct btrfs_root *root = BTRFS_I(dir)->root;
+1 -1
fs/ceph/dir.c
··· 912 912 return ceph_mknod(mnt_userns, dir, dentry, mode, 0); 913 913 } 914 914 915 - static int ceph_symlink(struct user_namespace *mnt_userns, struct inode *dir, 915 + static int ceph_symlink(struct mnt_idmap *idmap, struct inode *dir, 916 916 struct dentry *dentry, const char *dest) 917 917 { 918 918 struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(dir->i_sb);
+1 -1
fs/cifs/cifsfs.h
··· 124 124 /* Functions related to symlinks */ 125 125 extern const char *cifs_get_link(struct dentry *, struct inode *, 126 126 struct delayed_call *); 127 - extern int cifs_symlink(struct user_namespace *mnt_userns, struct inode *inode, 127 + extern int cifs_symlink(struct mnt_idmap *idmap, struct inode *inode, 128 128 struct dentry *direntry, const char *symname); 129 129 130 130 #ifdef CONFIG_CIFS_XATTR
+1 -1
fs/cifs/link.c
··· 568 568 } 569 569 570 570 int 571 - cifs_symlink(struct user_namespace *mnt_userns, struct inode *inode, 571 + cifs_symlink(struct mnt_idmap *idmap, struct inode *inode, 572 572 struct dentry *direntry, const char *symname) 573 573 { 574 574 int rc = -EOPNOTSUPP;
+1 -1
fs/coda/dir.c
··· 228 228 } 229 229 230 230 231 - static int coda_symlink(struct user_namespace *mnt_userns, 231 + static int coda_symlink(struct mnt_idmap *idmap, 232 232 struct inode *dir_inode, struct dentry *de, 233 233 const char *symname) 234 234 {
+1 -1
fs/configfs/configfs_internal.h
··· 91 91 extern const struct inode_operations configfs_symlink_inode_operations; 92 92 extern const struct dentry_operations configfs_dentry_ops; 93 93 94 - extern int configfs_symlink(struct user_namespace *mnt_userns, 94 + extern int configfs_symlink(struct mnt_idmap *idmap, 95 95 struct inode *dir, struct dentry *dentry, 96 96 const char *symname); 97 97 extern int configfs_unlink(struct inode *dir, struct dentry *dentry);
+1 -1
fs/configfs/symlink.c
··· 137 137 } 138 138 139 139 140 - int configfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 140 + int configfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 141 141 struct dentry *dentry, const char *symname) 142 142 { 143 143 int ret;
+1 -1
fs/ecryptfs/inode.c
··· 456 456 return ecryptfs_do_unlink(dir, dentry, d_inode(dentry)); 457 457 } 458 458 459 - static int ecryptfs_symlink(struct user_namespace *mnt_userns, 459 + static int ecryptfs_symlink(struct mnt_idmap *idmap, 460 460 struct inode *dir, struct dentry *dentry, 461 461 const char *symname) 462 462 {
+1 -1
fs/ext2/namei.c
··· 154 154 return err; 155 155 } 156 156 157 - static int ext2_symlink (struct user_namespace * mnt_userns, struct inode * dir, 157 + static int ext2_symlink (struct mnt_idmap * idmap, struct inode * dir, 158 158 struct dentry * dentry, const char * symname) 159 159 { 160 160 struct super_block * sb = dir->i_sb;
+2 -1
fs/ext4/namei.c
··· 3340 3340 return err; 3341 3341 } 3342 3342 3343 - static int ext4_symlink(struct user_namespace *mnt_userns, struct inode *dir, 3343 + static int ext4_symlink(struct mnt_idmap *idmap, struct inode *dir, 3344 3344 struct dentry *dentry, const char *symname) 3345 3345 { 3346 + struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 3346 3347 handle_t *handle; 3347 3348 struct inode *inode; 3348 3349 int err, len = strlen(symname);
+2 -1
fs/f2fs/namei.c
··· 660 660 return link; 661 661 } 662 662 663 - static int f2fs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 663 + static int f2fs_symlink(struct mnt_idmap *idmap, struct inode *dir, 664 664 struct dentry *dentry, const char *symname) 665 665 { 666 + struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 666 667 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); 667 668 struct inode *inode; 668 669 size_t len = strlen(symname);
+1 -1
fs/fuse/dir.c
··· 841 841 return create_new_entry(fm, &args, dir, entry, S_IFDIR); 842 842 } 843 843 844 - static int fuse_symlink(struct user_namespace *mnt_userns, struct inode *dir, 844 + static int fuse_symlink(struct mnt_idmap *idmap, struct inode *dir, 845 845 struct dentry *entry, const char *link) 846 846 { 847 847 struct fuse_mount *fm = get_fuse_mount(dir);
+2 -2
fs/gfs2/inode.c
··· 1207 1207 1208 1208 /** 1209 1209 * gfs2_symlink - Create a symlink 1210 - * @mnt_userns: User namespace of the mount the inode was found from 1210 + * @idmap: idmap of the mount the inode was found from 1211 1211 * @dir: The directory to create the symlink in 1212 1212 * @dentry: The dentry to put the symlink in 1213 1213 * @symname: The thing which the link points to ··· 1215 1215 * Returns: errno 1216 1216 */ 1217 1217 1218 - static int gfs2_symlink(struct user_namespace *mnt_userns, struct inode *dir, 1218 + static int gfs2_symlink(struct mnt_idmap *idmap, struct inode *dir, 1219 1219 struct dentry *dentry, const char *symname) 1220 1220 { 1221 1221 unsigned int size;
+1 -1
fs/hfsplus/dir.c
··· 434 434 return res; 435 435 } 436 436 437 - static int hfsplus_symlink(struct user_namespace *mnt_userns, struct inode *dir, 437 + static int hfsplus_symlink(struct mnt_idmap *idmap, struct inode *dir, 438 438 struct dentry *dentry, const char *symname) 439 439 { 440 440 struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb);
+1 -1
fs/hostfs/hostfs_kern.c
··· 658 658 return err; 659 659 } 660 660 661 - static int hostfs_symlink(struct user_namespace *mnt_userns, struct inode *ino, 661 + static int hostfs_symlink(struct mnt_idmap *idmap, struct inode *ino, 662 662 struct dentry *dentry, const char *to) 663 663 { 664 664 char *file;
+1 -1
fs/hpfs/namei.c
··· 292 292 return err; 293 293 } 294 294 295 - static int hpfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 295 + static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 296 296 struct dentry *dentry, const char *symlink) 297 297 { 298 298 const unsigned char *name = dentry->d_name.name;
+1 -1
fs/hugetlbfs/inode.c
··· 1064 1064 return finish_open_simple(file, 0); 1065 1065 } 1066 1066 1067 - static int hugetlbfs_symlink(struct user_namespace *mnt_userns, 1067 + static int hugetlbfs_symlink(struct mnt_idmap *idmap, 1068 1068 struct inode *dir, struct dentry *dentry, 1069 1069 const char *symname) 1070 1070 {
+2 -2
fs/jffs2/dir.c
··· 30 30 unsigned int); 31 31 static int jffs2_link (struct dentry *,struct inode *,struct dentry *); 32 32 static int jffs2_unlink (struct inode *,struct dentry *); 33 - static int jffs2_symlink (struct user_namespace *, struct inode *, 33 + static int jffs2_symlink (struct mnt_idmap *, struct inode *, 34 34 struct dentry *, const char *); 35 35 static int jffs2_mkdir (struct user_namespace *, struct inode *,struct dentry *, 36 36 umode_t); ··· 279 279 280 280 /***********************************************************************/ 281 281 282 - static int jffs2_symlink (struct user_namespace *mnt_userns, struct inode *dir_i, 282 + static int jffs2_symlink (struct mnt_idmap *idmap, struct inode *dir_i, 283 283 struct dentry *dentry, const char *target) 284 284 { 285 285 struct jffs2_inode_info *f, *dir_f;
+1 -1
fs/jfs/namei.c
··· 869 869 * an intermediate result whose length exceeds PATH_MAX [XPG4.2] 870 870 */ 871 871 872 - static int jfs_symlink(struct user_namespace *mnt_userns, struct inode *dip, 872 + static int jfs_symlink(struct mnt_idmap *idmap, struct inode *dip, 873 873 struct dentry *dentry, const char *name) 874 874 { 875 875 int rc;
+1 -1
fs/minix/namei.c
··· 71 71 return minix_mknod(&init_user_ns, dir, dentry, mode, 0); 72 72 } 73 73 74 - static int minix_symlink(struct user_namespace *mnt_userns, struct inode *dir, 74 + static int minix_symlink(struct mnt_idmap *idmap, struct inode *dir, 75 75 struct dentry *dentry, const char *symname) 76 76 { 77 77 int err = -ENAMETOOLONG;
+3 -2
fs/namei.c
··· 4394 4394 struct dentry *dentry, const char *oldname) 4395 4395 { 4396 4396 struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 4397 - int error = may_create(mnt_userns, dir, dentry); 4397 + int error; 4398 4398 4399 + error = may_create(mnt_userns, dir, dentry); 4399 4400 if (error) 4400 4401 return error; 4401 4402 ··· 4407 4406 if (error) 4408 4407 return error; 4409 4408 4410 - error = dir->i_op->symlink(mnt_userns, dir, dentry, oldname); 4409 + error = dir->i_op->symlink(idmap, dir, dentry, oldname); 4411 4410 if (!error) 4412 4411 fsnotify_create(dir, dentry); 4413 4412 return error;
+1 -1
fs/nfs/dir.c
··· 2524 2524 * now have a new file handle and can instantiate an in-core NFS inode 2525 2525 * and move the raw page into its mapping. 2526 2526 */ 2527 - int nfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 2527 + int nfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 2528 2528 struct dentry *dentry, const char *symname) 2529 2529 { 2530 2530 struct page *page;
+1 -1
fs/nfs/internal.h
··· 390 390 umode_t); 391 391 int nfs_rmdir(struct inode *, struct dentry *); 392 392 int nfs_unlink(struct inode *, struct dentry *); 393 - int nfs_symlink(struct user_namespace *, struct inode *, struct dentry *, 393 + int nfs_symlink(struct mnt_idmap *, struct inode *, struct dentry *, 394 394 const char *); 395 395 int nfs_link(struct dentry *, struct inode *, struct dentry *); 396 396 int nfs_mknod(struct user_namespace *, struct inode *, struct dentry *, umode_t,
+1 -1
fs/nilfs2/namei.c
··· 125 125 return err; 126 126 } 127 127 128 - static int nilfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 128 + static int nilfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 129 129 struct dentry *dentry, const char *symname) 130 130 { 131 131 struct nilfs_transaction_info ti;
+2 -1
fs/ntfs3/namei.c
··· 184 184 /* 185 185 * ntfs_symlink - inode_operations::symlink 186 186 */ 187 - static int ntfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 187 + static int ntfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 188 188 struct dentry *dentry, const char *symname) 189 189 { 190 + struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 190 191 u32 size = strlen(symname); 191 192 struct inode *inode; 192 193
+1 -1
fs/ocfs2/namei.c
··· 1784 1784 return status; 1785 1785 } 1786 1786 1787 - static int ocfs2_symlink(struct user_namespace *mnt_userns, 1787 + static int ocfs2_symlink(struct mnt_idmap *idmap, 1788 1788 struct inode *dir, 1789 1789 struct dentry *dentry, 1790 1790 const char *symname)
+1 -1
fs/orangefs/namei.c
··· 216 216 return ret; 217 217 } 218 218 219 - static int orangefs_symlink(struct user_namespace *mnt_userns, 219 + static int orangefs_symlink(struct mnt_idmap *idmap, 220 220 struct inode *dir, 221 221 struct dentry *dentry, 222 222 const char *symname)
+1 -1
fs/overlayfs/dir.c
··· 677 677 return ovl_create_object(dentry, mode, rdev, NULL); 678 678 } 679 679 680 - static int ovl_symlink(struct user_namespace *mnt_userns, struct inode *dir, 680 + static int ovl_symlink(struct mnt_idmap *idmap, struct inode *dir, 681 681 struct dentry *dentry, const char *link) 682 682 { 683 683 return ovl_create_object(dentry, S_IFLNK, 0, link);
+1 -1
fs/ramfs/inode.c
··· 125 125 return ramfs_mknod(&init_user_ns, dir, dentry, mode | S_IFREG, 0); 126 126 } 127 127 128 - static int ramfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 128 + static int ramfs_symlink(struct mnt_idmap *idmap, struct inode *dir, 129 129 struct dentry *dentry, const char *symname) 130 130 { 131 131 struct inode *inode;
+1 -1
fs/reiserfs/namei.c
··· 1099 1099 return retval; 1100 1100 } 1101 1101 1102 - static int reiserfs_symlink(struct user_namespace *mnt_userns, 1102 + static int reiserfs_symlink(struct mnt_idmap *idmap, 1103 1103 struct inode *parent_dir, struct dentry *dentry, 1104 1104 const char *symname) 1105 1105 {
+1 -1
fs/sysv/namei.c
··· 67 67 return sysv_mknod(&init_user_ns, dir, dentry, mode, 0); 68 68 } 69 69 70 - static int sysv_symlink(struct user_namespace *mnt_userns, struct inode *dir, 70 + static int sysv_symlink(struct mnt_idmap *idmap, struct inode *dir, 71 71 struct dentry *dentry, const char *symname) 72 72 { 73 73 int err = -ENAMETOOLONG;
+1 -1
fs/ubifs/dir.c
··· 1141 1141 return err; 1142 1142 } 1143 1143 1144 - static int ubifs_symlink(struct user_namespace *mnt_userns, struct inode *dir, 1144 + static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, 1145 1145 struct dentry *dentry, const char *symname) 1146 1146 { 1147 1147 struct inode *inode;
+1 -1
fs/udf/namei.c
··· 881 881 return retval; 882 882 } 883 883 884 - static int udf_symlink(struct user_namespace *mnt_userns, struct inode *dir, 884 + static int udf_symlink(struct mnt_idmap *idmap, struct inode *dir, 885 885 struct dentry *dentry, const char *symname) 886 886 { 887 887 struct inode *inode = udf_new_inode(dir, S_IFLNK | 0777);
+1 -1
fs/ufs/namei.c
··· 106 106 return err; 107 107 } 108 108 109 - static int ufs_symlink (struct user_namespace * mnt_userns, struct inode * dir, 109 + static int ufs_symlink (struct mnt_idmap * idmap, struct inode * dir, 110 110 struct dentry * dentry, const char * symname) 111 111 { 112 112 struct super_block * sb = dir->i_sb;
+1 -1
fs/vboxsf/dir.c
··· 430 430 return err; 431 431 } 432 432 433 - static int vboxsf_dir_symlink(struct user_namespace *mnt_userns, 433 + static int vboxsf_dir_symlink(struct mnt_idmap *idmap, 434 434 struct inode *parent, struct dentry *dentry, 435 435 const char *symname) 436 436 {
+2 -1
fs/xfs/xfs_iops.c
··· 401 401 402 402 STATIC int 403 403 xfs_vn_symlink( 404 - struct user_namespace *mnt_userns, 404 + struct mnt_idmap *idmap, 405 405 struct inode *dir, 406 406 struct dentry *dentry, 407 407 const char *symname) 408 408 { 409 + struct user_namespace *mnt_userns = mnt_idmap_owner(idmap); 409 410 struct inode *inode; 410 411 struct xfs_inode *cip = NULL; 411 412 struct xfs_name name;
+1 -1
include/linux/fs.h
··· 2143 2143 umode_t, bool); 2144 2144 int (*link) (struct dentry *,struct inode *,struct dentry *); 2145 2145 int (*unlink) (struct inode *,struct dentry *); 2146 - int (*symlink) (struct user_namespace *, struct inode *,struct dentry *, 2146 + int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *, 2147 2147 const char *); 2148 2148 int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *, 2149 2149 umode_t);
+1 -1
kernel/bpf/inode.c
··· 382 382 return simple_lookup(dir, dentry, flags); 383 383 } 384 384 385 - static int bpf_symlink(struct user_namespace *mnt_userns, struct inode *dir, 385 + static int bpf_symlink(struct mnt_idmap *idmap, struct inode *dir, 386 386 struct dentry *dentry, const char *target) 387 387 { 388 388 char *link = kstrdup(target, GFP_USER | __GFP_NOWARN);
+1 -1
mm/shmem.c
··· 3124 3124 return 0; 3125 3125 } 3126 3126 3127 - static int shmem_symlink(struct user_namespace *mnt_userns, struct inode *dir, 3127 + static int shmem_symlink(struct mnt_idmap *idmap, struct inode *dir, 3128 3128 struct dentry *dentry, const char *symname) 3129 3129 { 3130 3130 int error;