fs: forbid invalid project ID
authorWang Shilong <wshilong@ddn.com>
Tue, 3 Aug 2021 16:48:04 +0000 (09:48 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 3 Aug 2021 16:48:04 +0000 (09:48 -0700)
fileattr_set_prepare() should check if project ID
is valid, otherwise dqget() will return NULL for
such project ID quota.

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/ioctl.c

index 1e2204f..d4fabb5 100644 (file)
@@ -817,6 +817,14 @@ static int fileattr_set_prepare(struct inode *inode,
                if ((old_ma->fsx_xflags ^ fa->fsx_xflags) &
                                FS_XFLAG_PROJINHERIT)
                        return -EINVAL;
+       } else {
+               /*
+                * Caller is allowed to change the project ID. If it is being
+                * changed, make sure that the new value is valid.
+                */
+               if (old_ma->fsx_projid != fa->fsx_projid &&
+                   !projid_valid(make_kprojid(&init_user_ns, fa->fsx_projid)))
+                       return -EINVAL;
        }
 
        /* Check extent size hints. */