Messages in this thread | | | Date | Tue, 5 Aug 2014 09:38:25 +0300 | From | Heikki Krogerus <> | Subject | Re: [PATCHv2 5/6] base: platform: name the device already during allocation |
| |
On Mon, Jul 14, 2014 at 07:55:43AM -0700, Greg Kroah-Hartman wrote: > > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > > > index 9e9227e..e856bc4 100644 > > > --- a/drivers/base/platform.c > > > +++ b/drivers/base/platform.c > > > @@ -177,11 +177,45 @@ struct platform_object { > > > */ > > > void platform_device_put(struct platform_device *pdev) > > > { > > > - if (pdev) > > > - put_device(&pdev->dev); > > > + if (!pdev) > > > + return; > > > + > > > + if (pdev->id_auto) { > > > + ida_simple_remove(&platform_devid_ida, pdev->id); > > > + pdev->id = PLATFORM_DEVID_AUTO; > > > + } > > > + > > > + put_device(&pdev->dev); > > > } > > > EXPORT_SYMBOL_GPL(platform_device_put); > > Why would a single call to this function remove an id? That seems > really wrong, you should be able to call get and put on a device > numerous times, only the "last" reference should cause the device to be > cleaned up. > > Shouldn't this be in the release function instead?
I'll fix this.
Thanks Greg.
-- heikki
| |