Unverified Commit 1bd66c1a authored by Christian Brauner's avatar Christian Brauner
Browse files

fs: document mapping helpers

Document new helpers we introduced this cycle.

Link: https://lore.kernel.org/r/20210320122623.599086-2-christian.brauner@ubuntu.com


Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Suggested-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 0d02ec6b
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
@@ -1574,36 +1574,84 @@ static inline void i_gid_write(struct inode *inode, gid_t gid)
	inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid);
}

/**
 * kuid_into_mnt - map a kuid down into a mnt_userns
 * @mnt_userns: user namespace of the relevant mount
 * @kuid: kuid to be mapped
 *
 * Return: @kuid mapped according to @mnt_userns.
 * If @kuid has no mapping INVALID_UID is returned.
 */
static inline kuid_t kuid_into_mnt(struct user_namespace *mnt_userns,
				   kuid_t kuid)
{
	return make_kuid(mnt_userns, __kuid_val(kuid));
}

/**
 * kgid_into_mnt - map a kgid down into a mnt_userns
 * @mnt_userns: user namespace of the relevant mount
 * @kgid: kgid to be mapped
 *
 * Return: @kgid mapped according to @mnt_userns.
 * If @kgid has no mapping INVALID_GID is returned.
 */
static inline kgid_t kgid_into_mnt(struct user_namespace *mnt_userns,
				   kgid_t kgid)
{
	return make_kgid(mnt_userns, __kgid_val(kgid));
}

/**
 * i_uid_into_mnt - map an inode's i_uid down into a mnt_userns
 * @mnt_userns: user namespace of the mount the inode was found from
 * @inode: inode to map
 *
 * Return: the inode's i_uid mapped down according to @mnt_userns.
 * If the inode's i_uid has no mapping INVALID_UID is returned.
 */
static inline kuid_t i_uid_into_mnt(struct user_namespace *mnt_userns,
				    const struct inode *inode)
{
	return kuid_into_mnt(mnt_userns, inode->i_uid);
}

/**
 * i_gid_into_mnt - map an inode's i_gid down into a mnt_userns
 * @mnt_userns: user namespace of the mount the inode was found from
 * @inode: inode to map
 *
 * Return: the inode's i_gid mapped down according to @mnt_userns.
 * If the inode's i_gid has no mapping INVALID_GID is returned.
 */
static inline kgid_t i_gid_into_mnt(struct user_namespace *mnt_userns,
				    const struct inode *inode)
{
	return kgid_into_mnt(mnt_userns, inode->i_gid);
}

/**
 * kuid_from_mnt - map a kuid up into a mnt_userns
 * @mnt_userns: user namespace of the relevant mount
 * @kuid: kuid to be mapped
 *
 * Return: @kuid mapped up according to @mnt_userns.
 * If @kuid has no mapping INVALID_UID is returned.
 */
static inline kuid_t kuid_from_mnt(struct user_namespace *mnt_userns,
				   kuid_t kuid)
{
	return KUIDT_INIT(from_kuid(mnt_userns, kuid));
}

/**
 * kgid_from_mnt - map a kgid up into a mnt_userns
 * @mnt_userns: user namespace of the relevant mount
 * @kgid: kgid to be mapped
 *
 * Return: @kgid mapped up according to @mnt_userns.
 * If @kgid has no mapping INVALID_GID is returned.
 */
static inline kgid_t kgid_from_mnt(struct user_namespace *mnt_userns,
				   kgid_t kgid)
{