]> err.no Git - linux-2.6/blobdiff - drivers/usb/core/usb.c
[PATCH] dmi: remove uneeded function
[linux-2.6] / drivers / usb / core / usb.c
index 230839ac5c09cbe01f1e0e170647c36499c84f96..2cddd8a00437b8bede3f9814a66dc73a2190886a 100644 (file)
@@ -293,7 +293,7 @@ int usb_driver_claim_interface(struct usb_driver *driver,
        /* if interface was already added, bind now; else let
         * the future device_add() bind it, bypassing probe()
         */
-       if (!klist_node_attached (&dev->knode_bus))
+       if (klist_node_attached(&dev->knode_bus))
                device_bind_driver(dev);
 
        return 0;
@@ -322,9 +322,15 @@ void usb_driver_release_interface(struct usb_driver *driver,
        if (!dev->driver || dev->driver != &driver->driver)
                return;
 
-       /* don't disconnect from disconnect(), or before dev_add() */
-       if (!klist_node_attached(&dev->knode_driver) && !klist_node_attached(&dev->knode_bus))
+       /* don't release from within disconnect() */
+       if (iface->condition != USB_INTERFACE_BOUND)
+               return;
+
+       /* release only after device_add() */
+       if (klist_node_attached(&dev->knode_bus)) {
+               iface->condition = USB_INTERFACE_UNBINDING;
                device_release_driver(dev);
+       }
 
        dev->driver = NULL;
        usb_set_intfdata(iface, NULL);
@@ -1123,7 +1129,7 @@ int __usb_get_extra_descriptor(char *buffer, unsigned size,
 void *usb_buffer_alloc (
        struct usb_device *dev,
        size_t size,
-       int mem_flags,
+       unsigned mem_flags,
        dma_addr_t *dma
 )
 {
@@ -1394,7 +1400,7 @@ static int usb_generic_suspend(struct device *dev, pm_message_t message)
        driver = to_usb_driver(dev->driver);
 
        /* there's only one USB suspend state */
-       if (intf->dev.power.power_state)
+       if (intf->dev.power.power_state.event)
                return 0;
 
        if (driver->suspend)
@@ -1526,6 +1532,9 @@ EXPORT_SYMBOL(usb_register);
 EXPORT_SYMBOL(usb_deregister);
 EXPORT_SYMBOL(usb_disabled);
 
+EXPORT_SYMBOL_GPL(usb_get_intf);
+EXPORT_SYMBOL_GPL(usb_put_intf);
+
 EXPORT_SYMBOL(usb_alloc_dev);
 EXPORT_SYMBOL(usb_put_dev);
 EXPORT_SYMBOL(usb_get_dev);