diff options
| author | Darrick J. Wong <[email protected]> | 2024-07-02 18:22:30 +0000 |
|---|---|---|
| committer | Darrick J. Wong <[email protected]> | 2024-07-02 18:36:55 +0000 |
| commit | 24a4e1cb322e2bf0f3a1afd1978b610a23aa8f36 (patch) | |
| tree | 230581f2cd3dbace4f82a7036d7c872148dca8dd /fs/xfs/xfs_inode.h | |
| parent | xfs: verify buffer, inode, and dquot items every tx commit (diff) | |
| download | kernel-24a4e1cb322e2bf0f3a1afd1978b610a23aa8f36.tar.gz kernel-24a4e1cb322e2bf0f3a1afd1978b610a23aa8f36.zip | |
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 <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
Diffstat (limited to 'fs/xfs/xfs_inode.h')
0 files changed, 0 insertions, 0 deletions
