usb_bus_list_lock protects the usb_bus_list, and we don't touch that list in usb_disconnect(), so there's no reason to hold the lock here. Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> --- drivers/usb/core/hcd.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 014dc99..918e29e 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2621,9 +2621,7 @@ error_create_attr_group: #ifdef CONFIG_PM_RUNTIME cancel_work_sync(&hcd->wakeup_work); #endif - mutex_lock(&usb_bus_list_lock); usb_disconnect(&rhdev); /* Sets rhdev to NULL */ - mutex_unlock(&usb_bus_list_lock); err_register_root_hub: hcd->rh_pollable = 0; clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); @@ -2677,9 +2675,7 @@ void usb_remove_hcd(struct usb_hcd *hcd) cancel_work_sync(&hcd->wakeup_work); #endif - mutex_lock(&usb_bus_list_lock); usb_disconnect(&rhdev); /* Sets rhdev to NULL */ - mutex_unlock(&usb_bus_list_lock); /* Prevent any more root-hub status calls from the timer. * The HCD might still restart the timer (if a port status change -- 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