All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: colyli@suse.de
Cc: linux-bcache@vger.kernel.org
Subject: [bug report] bcache: explicitly make cache_set only have single cache
Date: Mon, 2 Nov 2020 16:02:26 +0300	[thread overview]
Message-ID: <20201102130226.GA30570@mwanda> (raw)

Hello Coly Li,

This is a semi-automatic email about new static checker warnings.

The patch 697e23495c94: "bcache: explicitly make cache_set only have 
single cache" from Oct 1, 2020, leads to the following Smatch 
complaint:

    drivers/md/bcache/super.c:2157 register_cache_set()
    error: we previously assumed 'c->cache' could be null (see line 2125)

drivers/md/bcache/super.c
  2124			if (!memcmp(c->set_uuid, ca->sb.set_uuid, 16)) {
  2125				if (c->cache)
                                    ^^^^^^^^

  2126					return "duplicate cache set member";
  2127	
  2128				goto found;
                                ^^^^^^^^^^
"c->cache" is NULL on this path.

  2129			}
  2130	
  2131		c = bch_cache_set_alloc(&ca->sb);
  2132		if (!c)
  2133			return err;
  2134	
  2135		err = "error creating kobject";
  2136		if (kobject_add(&c->kobj, bcache_kobj, "%pU", c->set_uuid) ||
  2137		    kobject_add(&c->internal, &c->kobj, "internal"))
  2138			goto err;
  2139	
  2140		if (bch_cache_accounting_add_kobjs(&c->accounting, &c->kobj))
  2141			goto err;
  2142	
  2143		bch_debug_init_cache_set(c);
  2144	
  2145		list_add(&c->list, &bch_cache_sets);
  2146	found:
  2147		sprintf(buf, "cache%i", ca->sb.nr_this_dev);
  2148		if (sysfs_create_link(&ca->kobj, &c->kobj, "set") ||
  2149		    sysfs_create_link(&c->kobj, &ca->kobj, buf))
  2150			goto err;
  2151	
  2152		kobject_get(&ca->kobj);
  2153		ca->set = c;
  2154		ca->set->cache = ca;
  2155	
  2156		err = "failed to run cache set";
  2157		if (run_cache_set(c) < 0)
                    ^^^^^^^^^^^^^^^^
c->cache gets dereferenced inside this function without checking when we
do "c->nbuckets = ca->sb.nbuckets;".

  2158			goto err;
  2159	

regards,
dan carpenter

             reply	other threads:[~2020-11-02 13:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-02 13:02 Dan Carpenter [this message]
2020-11-02 14:31 ` [bug report] bcache: explicitly make cache_set only have single cache Coly Li
2020-11-02 14:53   ` Dan Carpenter

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=20201102130226.GA30570@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=colyli@suse.de \
    --cc=linux-bcache@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.