Hello Kent Overstreet,

The patch e0750d947352: "bcachefs: Initial commit" from Mar 16, 2017
(linux-next), leads to the following Smatch static checker warning:

        fs/bcachefs/btree_update_interior.c:2336 __bch2_btree_root_alloc()
        error: 'b' dereferencing possible ERR_PTR()

fs/bcachefs/btree_update_interior.c
    2319 static int __bch2_btree_root_alloc(struct btree_trans *trans, enum 
btree_id id)
    2320 {
    2321         struct bch_fs *c = trans->c;
    2322         struct closure cl;
    2323         struct btree *b;
    2324         int ret;
    2325 
    2326         closure_init_stack(&cl);
    2327 
    2328         do {
    2329                 ret = bch2_btree_cache_cannibalize_lock(c, &cl);
    2330                 closure_sync(&cl);
    2331         } while (ret);
    2332 
    2333         b = bch2_btree_node_mem_alloc(trans, false);

Smatch complains that bch2_btree_node_mem_alloc() can fail

    2334         bch2_btree_cache_cannibalize_unlock(c);
    2335 
--> 2336         set_btree_node_fake(b);
                                     ^
Leading to a crash.

    2337         set_btree_node_need_rewrite(b);
    2338         b->c.level        = 0;
    2339         b->c.btree_id        = id;
    2340 

regards,
dan carpenter

Reply via email to