On Mon, Jun 28, 2021 at 08:38:01AM -0400, Wang Shilong wrote: > 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@xxxxxxx> > --- > v1->v2: try to fix in the VFS > --- > fs/ioctl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/ioctl.c b/fs/ioctl.c > index 1e2204fa9963..5db5b218637b 100644 > --- a/fs/ioctl.c > +++ b/fs/ioctl.c > @@ -845,6 +845,9 @@ static int fileattr_set_prepare(struct inode *inode, > if (fa->fsx_cowextsize == 0) > fa->fsx_xflags &= ~FS_XFLAG_COWEXTSIZE; > > + if (!projid_valid(KPROJIDT_INIT(fa->fsx_projid))) > + return -EINVAL; This needs to go further up in this function in the section where project IDs passed into this function are validated. Projids are only allowed to be changed when current_user_ns() == &init_user_ns, so this needs to be associated with that verification context. This check should also use make_kprojid(), please, not open code KPROJIDT_INIT. Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx