/* Will be called only by the device core when all users of this usb device are done.  */
static void usb_release_dev(struct device *dev)
/* Will be called only by the device core when all users of this usb device are done.  */
static void usb_release_dev(struct device *dev)
{
	struct usb_device *udev;
	struct usb_hcd *hcd;
	udev = to_usb_device(dev);
	hcd = bus_to_hcd(udev->bus);
	usb_destroy_configuration(udev);
	if (hcd->driver->free_dev && udev->parent)
		hcd->driver->free_dev(hcd, udev);
	usb_put_hcd(hcd);
	kfree(udev->product);
	kfree(udev->manufacturer);
	kfree(udev->serial);
	kfree(udev);
}