Fix to return the error code(instead always 0) when memory allocating
failed in __load_free_space_cache().

This lacks the analysis of consequences, so there's only one caller and
that will treat values <=0 as 'cache not loaded'. There's no functional
change but otherwise the error values should be there for clarity.

Fixes: a67509c30079f4c50 ("Btrfs: add a io_ctl struct and helpers for dealing 
with the space cache")
Reported-by: Hulk Robot <hul...@huawei.com>
Signed-off-by: Zhihao Cheng <chengzhih...@huawei.com>
---
 fs/btrfs/free-space-cache.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index af0013d3df63..ae4059ce2f84 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -744,8 +744,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) {
@@ -764,6 +766,7 @@ static int __load_free_space_cache(struct btrfs_root *root, 
struct inode *inode,
                        e->trim_state = BTRFS_TRIM_STATE_TRIMMED;
 
                if (!e->bytes) {
+                       ret = -1;
                        kmem_cache_free(btrfs_free_space_cachep, e);
                        goto free_cache;
                }
@@ -784,6 +787,7 @@ static int __load_free_space_cache(struct btrfs_root *root, 
struct inode *inode,
                        e->bitmap = kmem_cache_zalloc(
                                        btrfs_free_space_bitmap_cachep, 
GFP_NOFS);
                        if (!e->bitmap) {
+                               ret = -ENOMEM;
                                kmem_cache_free(
                                        btrfs_free_space_cachep, e);
                                goto free_cache;
-- 
2.25.4

Reply via email to