diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-04-06 19:14:18 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-04-06 19:14:18 +0300 |
commit | 9520c192e853bad2a0029f5ce00fa7774408efad (patch) | |
tree | 9b2b0db15a8b9bc669349fec0eacb026f72b3472 /fs | |
parent | 119c289409ddb9bca55074388f282ca67da67692 (diff) | |
parent | e23d7e82b707d1d0a627e334fb46370e4f772c11 (diff) | |
download | linux-9520c192e853bad2a0029f5ce00fa7774408efad.tar.xz |
Merge tag 'xfs-6.9-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
Pull xfs fix from Chandan Babu:
- Allow creating new links to special files which were not associated
with a project quota
* tag 'xfs-6.9-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
xfs: allow cross-linking special files without project quota
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_inode.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ea48774f6b76..d55b42b2480d 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1301,8 +1301,19 @@ xfs_link( */ if (unlikely((tdp->i_diflags & XFS_DIFLAG_PROJINHERIT) && tdp->i_projid != sip->i_projid)) { - error = -EXDEV; - goto error_return; + /* + * Project quota setup skips special files which can + * leave inodes in a PROJINHERIT directory without a + * project ID set. We need to allow links to be made + * to these "project-less" inodes because userspace + * expects them to succeed after project ID setup, + * but everything else should be rejected. + */ + if (!special_file(VFS_I(sip)->i_mode) || + sip->i_projid != 0) { + error = -EXDEV; + goto error_return; + } } if (!resblks) { |