We currently leak the ->shared_hcd because ->stop() clears the pointer
thus preventing xhci_pci_remove() from doing its cleanup of the USB3 hcd.

Regarding the cases mentioned in the comment the code is prepared to either 
abort
initialization and continue the startup, or relies on ->shared_hcd being
set to trigger usb_remove_hcd() to be called.

Signed-off-by: Dan Williams <dan.j.willi...@intel.com>
---
 drivers/usb/host/xhci.c |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 4265b48856f6..0ea11724c5d1 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -646,12 +646,6 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd)
 
        spin_lock_irq(&xhci->lock);
        xhci_halt(xhci);
-
-       /* The shared_hcd is going to be deallocated shortly (the USB core only
-        * calls this function when allocation fails in usb_add_hcd(), or
-        * usb_remove_hcd() is called).  So we need to unset xHCI's pointer.
-        */
-       xhci->shared_hcd = NULL;
        spin_unlock_irq(&xhci->lock);
 }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to