All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@linaro.org>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: linux-bcachefs@vger.kernel.org
Subject: [bug report] bcachefs: bch_err_throw()
Date: Wed, 6 Aug 2025 14:44:25 +0300	[thread overview]
Message-ID: <aJNAGQeRcXeFkaJT@stanley.mountain> (raw)

Hello Kent Overstreet,

Commit 09b9c72bd4b7 ("bcachefs: bch_err_throw()") from May 28, 2025
(linux-next), leads to the following (unpublished) Smatch static checker
warning:

	fs/bcachefs/super.c:2546 bch2_fs_open()
	warn: pointer dereferenced without being set 'c'

fs/bcachefs/super.c
    2515 struct bch_fs *bch2_fs_open(darray_const_str *devices,
    2516                             struct bch_opts *opts)
    2517 {
    2518         bch_sb_handles sbs = {};
    2519         struct bch_fs *c = NULL;
                               ^^^^^^^^^
c is NULL

    2520         struct bch_sb_handle *best = NULL;
    2521         int ret = 0;
    2522 
    2523         if (!try_module_get(THIS_MODULE))
    2524                 return ERR_PTR(-ENODEV);
    2525 
    2526         if (!devices->nr) {
    2527                 ret = -EINVAL;
    2528                 goto err;
    2529         }
    2530 
    2531         ret = darray_make_room(&sbs, devices->nr);
    2532         if (ret)
    2533                 goto err;
    2534 
    2535         darray_for_each(*devices, i) {
    2536                 struct bch_sb_handle sb = { NULL };
    2537 
    2538                 ret = bch2_read_super(*i, opts, &sb);
    2539                 if (ret)
    2540                         goto err;
    2541 
    2542                 BUG_ON(darray_push(&sbs, sb));
    2543         }
    2544 
    2545         if (opts->nochanges && !opts->read_only) {
--> 2546                 ret = bch_err_throw(c, erofs_nochanges);
                                             ^
It hasn't been set yet.

    2547                 goto err_print;
    2548         }
    2549 
    2550         darray_for_each(sbs, sb)
    2551                 if (!best || sb_cmp(sb->sb, best->sb) > 0)
    2552                         best = sb;
    2553 
    2554         darray_for_each_reverse(sbs, sb) {
    2555                 ret = bch2_dev_in_fs(best, sb, opts);
    2556 
    2557                 if (ret == -BCH_ERR_device_has_been_removed ||
    2558                     ret == -BCH_ERR_device_splitbrain) {
    2559                         bch2_free_super(sb);
    2560                         darray_remove_item(&sbs, sb);
    2561                         best -= best > sb;
    2562                         ret = 0;
    2563                         continue;
    2564                 }
    2565 
    2566                 if (ret)
    2567                         goto err_print;
    2568         }
    2569 
    2570         c = bch2_fs_alloc(best->sb, opts, &sbs);
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
set here.

    2571         ret = PTR_ERR_OR_ZERO(c);
    2572         if (ret)
    2573                 goto err;
    2574 
    2575         scoped_guard(rwsem_write, &c->state_lock)
    2576                 darray_for_each(sbs, sb) {
    2577                         ret = bch2_dev_attach_bdev(c, sb);
    2578                         if (ret)
    2579                                 goto err;
    2580                 }
    2581 
    2582         if (!c->opts.nostart) {
    2583                 ret = bch2_fs_start(c);
    2584                 if (ret)
    2585                         goto err;
    2586         }
    2587 out:
    2588         darray_for_each(sbs, sb)
    2589                 bch2_free_super(sb);
    2590         darray_exit(&sbs);
    2591         module_put(THIS_MODULE);
    2592         return c;
    2593 err_print:
    2594         pr_err("bch_fs_open err opening %s: %s",
    2595                devices->data[0], bch2_err_str(ret));
    2596 err:
    2597         if (!IS_ERR_OR_NULL(c))
    2598                 bch2_fs_stop(c);
    2599         c = ERR_PTR(ret);
    2600         goto out;
    2601 }

regards,
dan carpenter

             reply	other threads:[~2025-08-06 11:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-06 11:44 Dan Carpenter [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-08-06 11:44 [bug report] bcachefs: bch_err_throw() Dan Carpenter
2025-08-06 17:02 ` Kent Overstreet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aJNAGQeRcXeFkaJT@stanley.mountain \
    --to=dan.carpenter@linaro.org \
    --cc=kent.overstreet@linux.dev \
    --cc=linux-bcachefs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.