]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xfs: use consistent uid/gid when grabbing dquots for inodes
authorDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:22:30 +0000 (11:22 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:36:55 +0000 (11:36 -0700)
commit24a4e1cb322e2bf0f3a1afd1978b610a23aa8f36
tree230581f2cd3dbace4f82a7036d7c872148dca8dd
parent150bb10a28b9c8709ae227fc898d9cf6136faa1e
xfs: use consistent uid/gid when grabbing dquots for inodes

I noticed that callers of xfs_qm_vop_dqalloc use the following code to
compute the anticipated uid of the new file:

mapped_fsuid(idmap, &init_user_ns);

whereas the VFS uses a slightly different computation for actually
assigning i_uid:

mapped_fsuid(idmap, i_user_ns(inode));

Technically, these are not the same things.  According to Christian
Brauner, the only time that inode->i_sb->s_user_ns != &init_user_ns is
when the filesystem was mounted in a new mount namespace by an
unpriviledged user.  XFS does not allow this, which is why we've never
seen bug reports about quotas being incorrect or the uid checks in
xfs_qm_vop_create_dqattach tripping debug assertions.

However, this /is/ a logic bomb, so let's make the code consistent.

Link: https://lore.kernel.org/linux-fsdevel/20240617-weitblick-gefertigt-4a41f37119fa@brauner/
Fixes: c14329d39f2d ("fs: port fs{g,u}id helpers to mnt_idmap")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_inode.c
fs/xfs/xfs_symlink.c