Message ID | 20180925205301.6182.58728.stgit@localhost.localdomain (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Minor fixups for nd_device_register | expand |
On Tue, Sep 25, 2018 at 1:53 PM Alexander Duyck <alexander.h.duyck@linux.intel.com> wrote: > > Unlike asynchronous initialization in the core we have not yet associated > the device with the parent, and as such the device doesn't hold a reference > to the parent. > > In order to resolve that we should be holding a reference on the parent > until the asynchronous initialization has completed. Looks good to me. Thanks for splitting this out, applied.
diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 8aae6dcc839f..9148015ed803 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -488,6 +488,8 @@ static void nd_async_device_register(void *d, async_cookie_t cookie) put_device(dev); } put_device(dev); + if (dev->parent) + put_device(dev->parent); } static void nd_async_device_unregister(void *d, async_cookie_t cookie) @@ -507,6 +509,8 @@ void __nd_device_register(struct device *dev) if (!dev) return; dev->bus = &nvdimm_bus_type; + if (dev->parent) + get_device(dev->parent); get_device(dev); async_schedule_domain(nd_async_device_register, dev, &nd_async_domain);
Unlike asynchronous initialization in the core we have not yet associated the device with the parent, and as such the device doesn't hold a reference to the parent. In order to resolve that we should be holding a reference on the parent until the asynchronous initialization has completed. Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com> --- drivers/nvdimm/bus.c | 4 ++++ 1 file changed, 4 insertions(+)