Re: [RFC PATCH 02/57] drivers: ipmi: Drop device reference

From: Greg KH
Date: Tue Jun 04 2019 - 03:47:52 EST


On Mon, Jun 03, 2019 at 02:59:27PM -0500, Corey Minyard wrote:
> On Mon, Jun 03, 2019 at 09:09:21PM +0200, Greg KH wrote:
> > On Mon, Jun 03, 2019 at 04:49:28PM +0100, Suzuki K Poulose wrote:
> > > Drop the reference to a device found via bus_find_device()
> > >
> > > Cc: Corey Minyard <minyard@xxxxxxx>
> > > Cc: Arnd Bergmann <arnd@xxxxxxxx>
> > > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > > Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
> > > ---
> > > drivers/char/ipmi/ipmi_si_platform.c | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/drivers/char/ipmi/ipmi_si_platform.c b/drivers/char/ipmi/ipmi_si_platform.c
> > > index f2a91c4..ff82353 100644
> > > --- a/drivers/char/ipmi/ipmi_si_platform.c
> > > +++ b/drivers/char/ipmi/ipmi_si_platform.c
> > > @@ -442,6 +442,7 @@ void ipmi_remove_platform_device_by_name(char *name)
> > > pdev_match_name))) {
> > > struct platform_device *pdev = to_platform_device(dev);
> > >
> > > + put_device(dev);
> > > platform_device_unregister(pdev);
> >
> > So you drop the reference, and then actually use the pointer?
>
> I did think about this, and in this case you can, I think.
> platform_device_unregister() does a put_device() at the end of it's
> processing, right?

Yes, but that is the reference of the counter that was originally
initialized, not the reference that was just grabbed here. It's really
all the same :)

> But it is better style to do it the other way, so I can change it.

Please do, thanks.

greg k-h