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 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html