On Tue, Aug 15, 2017 at 11:21:49AM -0600, Jason Gunthorpe wrote: > On Tue, Aug 15, 2017 at 10:13:36AM +0300, Leon Romanovsky wrote: > > On Tue, Aug 15, 2017 at 02:33:05AM -0400, Zhu Yanjun wrote: > > > The driver core clears the driver data to NULL after device_release > > > or on probe failure. Thus, it is not necessary to manually clear the > > > device driver data to NULL. > > > > > > > It makes sense and I'm pretty sure that you are right, but I'm failing > > to find the function in device core which sets it to NULL. Can you help > > me and present the actual call stack to that code place? > > http://elixir.free-electrons.com/linux/v4.13-rc1/source/drivers/base/dd.c#L840 > > The call to the remove callback is on line 833. > > This is done after dropping devres, so you could allocate the drv data > inside a devm object and everything would unwind correctly. Thanks for the pointer. Will it be called in case of failure during initialization too? > > In this case, the kfree is explicit, so I would advocate for still putting > the null near the kfree to minimize the time where a free'd pointer is > present - eg incase a devm callback or some other bug accidently > touches it. > > Jason
Attachment:
signature.asc
Description: PGP signature