/*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns),
-                       mapped_fsgid(mnt_userns), prid,
+       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns, &init_user_ns),
+                       mapped_fsgid(mnt_userns, &init_user_ns), prid,
                        XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                        &udqp, &gdqp, &pdqp);
        if (error)
        /*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns),
-                       mapped_fsgid(mnt_userns), prid,
+       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns, &init_user_ns),
+                       mapped_fsgid(mnt_userns, &init_user_ns), prid,
                        XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                        &udqp, &gdqp, &pdqp);
        if (error)
 
        /*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns),
-                       mapped_fsgid(mnt_userns), prid,
+       error = xfs_qm_vop_dqalloc(dp, mapped_fsuid(mnt_userns, &init_user_ns),
+                       mapped_fsgid(mnt_userns, &init_user_ns), prid,
                        XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                        &udqp, &gdqp, &pdqp);
        if (error)
 
 static inline void inode_fsuid_set(struct inode *inode,
                                   struct user_namespace *mnt_userns)
 {
-       inode->i_uid = mapped_fsuid(mnt_userns);
+       inode->i_uid = mapped_fsuid(mnt_userns, &init_user_ns);
 }
 
 /**
 static inline void inode_fsgid_set(struct inode *inode,
                                   struct user_namespace *mnt_userns)
 {
-       inode->i_gid = mapped_fsgid(mnt_userns);
+       inode->i_gid = mapped_fsgid(mnt_userns, &init_user_ns);
 }
 
 /**
        kuid_t kuid;
        kgid_t kgid;
 
-       kuid = mapped_fsuid(mnt_userns);
+       kuid = mapped_fsuid(mnt_userns, &init_user_ns);
        if (!uid_valid(kuid))
                return false;
-       kgid = mapped_fsgid(mnt_userns);
+       kgid = mapped_fsgid(mnt_userns, &init_user_ns);
        if (!gid_valid(kgid))
                return false;
        return kuid_has_mapping(fs_userns, kuid) &&
 
 /**
  * mapped_fsuid - return caller's fsuid mapped up into a mnt_userns
  * @mnt_userns: the mount's idmapping
+ * @fs_userns: the filesystem's idmapping
  *
  * Use this helper to initialize a new vfs or filesystem object based on
  * the caller's fsuid. A common example is initializing the i_uid field of
  *
  * Return: the caller's current fsuid mapped up according to @mnt_userns.
  */
-static inline kuid_t mapped_fsuid(struct user_namespace *mnt_userns)
+static inline kuid_t mapped_fsuid(struct user_namespace *mnt_userns,
+                                 struct user_namespace *fs_userns)
 {
-       return mapped_kuid_user(mnt_userns, &init_user_ns, current_fsuid());
+       return mapped_kuid_user(mnt_userns, fs_userns, current_fsuid());
 }
 
 /**
  * mapped_fsgid - return caller's fsgid mapped up into a mnt_userns
  * @mnt_userns: the mount's idmapping
+ * @fs_userns: the filesystem's idmapping
  *
  * Use this helper to initialize a new vfs or filesystem object based on
  * the caller's fsgid. A common example is initializing the i_gid field of
  *
  * Return: the caller's current fsgid mapped up according to @mnt_userns.
  */
-static inline kgid_t mapped_fsgid(struct user_namespace *mnt_userns)
+static inline kgid_t mapped_fsgid(struct user_namespace *mnt_userns,
+                                 struct user_namespace *fs_userns)
 {
-       return mapped_kgid_user(mnt_userns, &init_user_ns, current_fsgid());
+       return mapped_kgid_user(mnt_userns, fs_userns, current_fsgid());
 }
 
 #endif /* _LINUX_MNT_IDMAPPING_H */