|
@@ -2698,7 +2698,6 @@ int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
|
|
|
struct ext4_inode *raw_inode, handle_t *handle)
|
|
|
{
|
|
|
struct ext4_xattr_ibody_header *header;
|
|
|
- struct buffer_head *bh;
|
|
|
struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
|
|
|
static unsigned int mnt_count;
|
|
|
size_t min_offs;
|
|
@@ -2739,13 +2738,17 @@ retry:
|
|
|
* EA block can hold new_extra_isize bytes.
|
|
|
*/
|
|
|
if (EXT4_I(inode)->i_file_acl) {
|
|
|
+ struct buffer_head *bh;
|
|
|
+
|
|
|
bh = sb_bread(inode->i_sb, EXT4_I(inode)->i_file_acl);
|
|
|
error = -EIO;
|
|
|
if (!bh)
|
|
|
goto cleanup;
|
|
|
error = ext4_xattr_check_block(inode, bh);
|
|
|
- if (error)
|
|
|
+ if (error) {
|
|
|
+ brelse(bh);
|
|
|
goto cleanup;
|
|
|
+ }
|
|
|
base = BHDR(bh);
|
|
|
end = bh->b_data + bh->b_size;
|
|
|
min_offs = end - base;
|