From: Dan Carpenter <dan.carpenter@oracle.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: linux-nvdimm <linux-nvdimm@lists.01.org>
Subject: Re: [bug report] libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver infrastructure
Date: Wed, 5 Feb 2020 21:10:40 +0300 [thread overview]
Message-ID: <20200205181040.GC24804@kadam> (raw)
In-Reply-To: <CAPcyv4j12vgjgEgY3xAr9bpV8dd+3E7Q5Q3OFo2AXmwnN45PBA@mail.gmail.com>
On Wed, Feb 05, 2020 at 09:47:01AM -0800, Dan Williams wrote:
> On Wed, Feb 5, 2020 at 4:38 AM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > Hello Dan Williams,
> >
> > The patch 4d88a97aa9e8: "libnvdimm, nvdimm: dimm driver and base
> > libnvdimm device-driver infrastructure" from May 31, 2015, leads to
> > the following static checker warning:
> >
> > drivers/nvdimm/bus.c:511 nd_async_device_register()
> > error: dereferencing freed memory 'dev'
> >
> > drivers/nvdimm/bus.c
> > 502 static void nd_async_device_register(void *d, async_cookie_t cookie)
> > 503 {
> > 504 struct device *dev = d;
> > 505
> > 506 if (device_add(dev) != 0) {
> > 507 dev_err(dev, "%s: failed\n", __func__);
> > 508 put_device(dev);
> > ^^^^^^^^^^^^^^^
> > 509 }
> > 510 put_device(dev);
> > ^^^^^^^^^^^^^^
> > 511 if (dev->parent)
> > 512 put_device(dev->parent);
> > 513 }
> >
> > We call get_device() from __nd_device_register(), I guess. It seems
> > buggy to call put device twice on error.
>
> The registration path does:
>
> get_device(dev);
>
> async_schedule_dev_domain(nd_async_device_register, dev,
> &nd_async_domain);
>
> ...and device_add() does its own get_device().
device_add() does its own put_device() at the end so it's a net zero.
regards,
dan carpenter
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
next prev parent reply other threads:[~2020-02-05 18:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 12:38 [bug report] libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver infrastructure Dan Carpenter
2020-02-05 17:47 ` Dan Williams
2020-02-05 18:10 ` Dan Carpenter [this message]
2020-02-05 18:23 ` Dan Williams
2020-02-05 19:08 ` Dan Carpenter
2020-02-05 19:16 ` Dan Williams
2020-02-05 19:28 ` Dan Carpenter
2020-02-05 20:04 ` Dan Williams
2020-02-05 20:18 ` 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=20200205181040.GC24804@kadam \
--to=dan.carpenter@oracle.com \
--cc=dan.j.williams@intel.com \
--cc=linux-nvdimm@lists.01.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.