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
next 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.