mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 07:20:50 +07:00
ext4: Fix buffer head leaks after calls to ext4_get_inode_loc()
Calls to ext4_get_inode_loc() returns with a reference to a buffer head in iloc->bh. The callers of this function in ext4_write_inode() when in no journal mode and in ext4_xattr_fiemap() don't release the buffer head after using it. Addresses-Google-Bug: #2548165 Signed-off-by: Curt Wohlgemuth <curtw@google.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
8b472d739b
commit
fd2dd9fbaf
@ -3879,6 +3879,7 @@ static int ext4_xattr_fiemap(struct inode *inode,
|
|||||||
physical += offset;
|
physical += offset;
|
||||||
length = EXT4_SB(inode->i_sb)->s_inode_size - offset;
|
length = EXT4_SB(inode->i_sb)->s_inode_size - offset;
|
||||||
flags |= FIEMAP_EXTENT_DATA_INLINE;
|
flags |= FIEMAP_EXTENT_DATA_INLINE;
|
||||||
|
brelse(iloc.bh);
|
||||||
} else { /* external block */
|
} else { /* external block */
|
||||||
physical = EXT4_I(inode)->i_file_acl << blockbits;
|
physical = EXT4_I(inode)->i_file_acl << blockbits;
|
||||||
length = inode->i_sb->s_blocksize;
|
length = inode->i_sb->s_blocksize;
|
||||||
|
@ -5385,6 +5385,7 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc)
|
|||||||
(unsigned long long)iloc.bh->b_blocknr);
|
(unsigned long long)iloc.bh->b_blocknr);
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
}
|
}
|
||||||
|
brelse(iloc.bh);
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user