]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_key_cache.c
Update bcachefs sources to 22ccceee15 bcachefs: Fix a slab-out-of-bounds
[bcachefs-tools-debian] / libbcachefs / btree_key_cache.c
index 27a73933878a2b7618f506f05ac39e745aa058c7..33269afe9cf22c39ee6cf8a16194fdc2765f76a0 100644 (file)
@@ -337,7 +337,7 @@ btree_key_cache_create(struct btree_trans *trans, struct btree_path *path)
                if (unlikely(!ck)) {
                        bch_err(c, "error allocating memory for key cache item, btree %s",
                                bch2_btree_ids[path->btree_id]);
-                       return ERR_PTR(-ENOMEM);
+                       return ERR_PTR(-BCH_ERR_ENOMEM_btree_key_cache_create);
                }
 
                mark_btree_node_locked(trans, path, 0, SIX_LOCK_intent);
@@ -424,7 +424,7 @@ static int btree_key_cache_fill(struct btree_trans *trans,
                        if (!new_k) {
                                bch_err(trans->c, "error allocating memory for key cache key, btree %s u64s %u",
                                        bch2_btree_ids[ck->key.btree_id], new_u64s);
-                               ret = -ENOMEM;
+                               ret = -BCH_ERR_ENOMEM_btree_key_cache_fill;
                                goto err;
                        }
 
@@ -1056,17 +1056,15 @@ static void bch2_btree_key_cache_shrinker_to_text(struct seq_buf *s, struct shri
 int bch2_fs_btree_key_cache_init(struct btree_key_cache *bc)
 {
        struct bch_fs *c = container_of(bc, struct bch_fs, btree_key_cache);
-       int ret;
 
 #ifdef __KERNEL__
        bc->pcpu_freed = alloc_percpu(struct btree_key_cache_freelist);
        if (!bc->pcpu_freed)
-               return -ENOMEM;
+               return -BCH_ERR_ENOMEM_fs_btree_cache_init;
 #endif
 
-       ret = rhashtable_init(&bc->table, &bch2_btree_key_cache_params);
-       if (ret)
-               return ret;
+       if (rhashtable_init(&bc->table, &bch2_btree_key_cache_params))
+               return -BCH_ERR_ENOMEM_fs_btree_cache_init;
 
        bc->table_init_done = true;
 
@@ -1074,7 +1072,9 @@ int bch2_fs_btree_key_cache_init(struct btree_key_cache *bc)
        bc->shrink.count_objects        = bch2_btree_key_cache_count;
        bc->shrink.scan_objects         = bch2_btree_key_cache_scan;
        bc->shrink.to_text              = bch2_btree_key_cache_shrinker_to_text;
-       return register_shrinker(&bc->shrink, "%s/btree_key_cache", c->name);
+       if (register_shrinker(&bc->shrink, "%s/btree_key_cache", c->name))
+               return -BCH_ERR_ENOMEM_fs_btree_cache_init;
+       return 0;
 }
 
 void bch2_btree_key_cache_to_text(struct printbuf *out, struct btree_key_cache *c)