btrfs: clarify error returns values in __load_free_space_cache
[ Upstream commit 3cc64e7ebfb0d7faaba2438334c43466955a96e8 ] Return value in __load_free_space_cache is not properly set after (unlikely) memory allocation failures and 0 is returned instead. This is not a problem for the caller load_free_space_cache because only value 1 is considered as 'cache loaded' but for clarity it's better to set the errors accordingly. Fixes: a67509c30079 ("Btrfs: add a io_ctl struct and helpers for dealing with the space cache") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
afe8372892
commit
2f36ef5863
@ -753,8 +753,10 @@ static int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
|
||||
while (num_entries) {
|
||||
e = kmem_cache_zalloc(btrfs_free_space_cachep,
|
||||
GFP_NOFS);
|
||||
if (!e)
|
||||
if (!e) {
|
||||
ret = -ENOMEM;
|
||||
goto free_cache;
|
||||
}
|
||||
|
||||
ret = io_ctl_read_entry(&io_ctl, e, &type);
|
||||
if (ret) {
|
||||
@ -763,6 +765,7 @@ static int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
|
||||
}
|
||||
|
||||
if (!e->bytes) {
|
||||
ret = -1;
|
||||
kmem_cache_free(btrfs_free_space_cachep, e);
|
||||
goto free_cache;
|
||||
}
|
||||
@ -782,6 +785,7 @@ static int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
|
||||
num_bitmaps--;
|
||||
e->bitmap = kzalloc(PAGE_SIZE, GFP_NOFS);
|
||||
if (!e->bitmap) {
|
||||
ret = -ENOMEM;
|
||||
kmem_cache_free(
|
||||
btrfs_free_space_cachep, e);
|
||||
goto free_cache;
|
||||
|
Loading…
x
Reference in New Issue
Block a user