ovl: port to vfs{g,u}id_t and associated helpers
authorChristian Brauner <brauner@kernel.org>
Fri, 9 Sep 2022 09:07:47 +0000 (11:07 +0200)
committerChristian Brauner (Microsoft) <brauner@kernel.org>
Wed, 26 Oct 2022 08:03:34 +0000 (10:03 +0200)
A while ago we introduced a dedicated vfs{g,u}id_t type in commit
1e5267cd0895 ("mnt_idmapping: add vfs{g,u}id_t"). We already switched
over a good part of the VFS. Ultimately we will remove all legacy
idmapped mount helpers that operate only on k{g,u}id_t in favor of the
new type safe helpers that operate on vfs{g,u}id_t.

Cc: Amir Goldstein <amir73il@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Reviewed-by: Seth Forshee (DigitalOcean) <sforshee@kernel.org>
Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
fs/overlayfs/util.c

index 81a57a8..c0c20d3 100644 (file)
@@ -1104,13 +1104,18 @@ void ovl_copyattr(struct inode *inode)
        struct path realpath;
        struct inode *realinode;
        struct user_namespace *real_mnt_userns;
+       vfsuid_t vfsuid;
+       vfsgid_t vfsgid;
 
        ovl_i_path_real(inode, &realpath);
        realinode = d_inode(realpath.dentry);
        real_mnt_userns = mnt_user_ns(realpath.mnt);
 
-       inode->i_uid = i_uid_into_mnt(real_mnt_userns, realinode);
-       inode->i_gid = i_gid_into_mnt(real_mnt_userns, realinode);
+       vfsuid = i_uid_into_vfsuid(real_mnt_userns, realinode);
+       vfsgid = i_gid_into_vfsgid(real_mnt_userns, realinode);
+
+       inode->i_uid = vfsuid_into_kuid(vfsuid);
+       inode->i_gid = vfsgid_into_kgid(vfsgid);
        inode->i_mode = realinode->i_mode;
        inode->i_atime = realinode->i_atime;
        inode->i_mtime = realinode->i_mtime;