ext4: initialize quota before expanding inode in setproject ioctl
commit 1485f726c6 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>
This commit is contained in:
parent
9882601ee6
commit
15d0cf84df
1 changed files with 4 additions and 4 deletions
|
|
@ -495,6 +495,10 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
|
||||||
if (ext4_is_quota_file(inode))
|
if (ext4_is_quota_file(inode))
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
err = dquot_initialize(inode);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
err = ext4_get_inode_loc(inode, &iloc);
|
err = ext4_get_inode_loc(inode, &iloc);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
@ -510,10 +514,6 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
|
||||||
brelse(iloc.bh);
|
brelse(iloc.bh);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dquot_initialize(inode);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
|
handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
|
||||||
EXT4_QUOTA_INIT_BLOCKS(sb) +
|
EXT4_QUOTA_INIT_BLOCKS(sb) +
|
||||||
EXT4_QUOTA_DEL_BLOCKS(sb) + 3);
|
EXT4_QUOTA_DEL_BLOCKS(sb) + 3);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue