Skip to content

Commit

Permalink
ext4: initialize quota before expanding inode in setproject ioctl
Browse files Browse the repository at this point in the history
commit 1485f72 upstream.

Make sure we initialize quotas before possibly expanding inode space
(and thus maybe needing to allocate external xattr block) in
ext4_ioctl_setproject(). This prevents not accounting the necessary
block allocation.

Signed-off-by: Jan Kara <jack@suse.cz>
Cc: stable@kernel.org
Link: https://lore.kernel.org/r/20221207115937.26601-1-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jan Kara authored and Greg Kroah-Hartman committed Jan 7, 2023
1 parent 9c4ef44 commit 56836c3
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions fs/ext4/ioctl.c
Original file line number Diff line number Diff line change
@@ -333,6 +333,10 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
if (IS_NOQUOTA(inode))
goto out_unlock;

err = dquot_initialize(inode);
if (err)
goto out_unlock;

err = ext4_get_inode_loc(inode, &iloc);
if (err)
goto out_unlock;
@@ -345,10 +349,6 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
}
brelse(iloc.bh);

err = dquot_initialize(inode);
if (err)
return err;

handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
EXT4_QUOTA_INIT_BLOCKS(sb) +
EXT4_QUOTA_DEL_BLOCKS(sb) + 3);

0 comments on commit 56836c3

Please sign in to comment.