summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorTuomas Tynkkynen <ttynkkynen@nvidia.com>2014-06-17 17:17:40 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-07-09 16:25:22 -0700
commit6a70b621227d1fd3efd150fce63ea4d51d4acaa9 (patch)
tree8c5f0e0c2e03917735f5334dd6c0a62bb9ab61ab /drivers/usb
parent6e693739e9b603b3ca9ce0d4f4178f0633458465 (diff)
USB: EHCI: tegra: Fix use-after-free in .remove()
The tegra_ehci_hcd structure is located in the private space allocated by the core USB code so it must not be accessed after the HCD is freed. Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ehci-tegra.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index c303371f67bc..693f792aa7f5 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -479,10 +479,11 @@ static int tegra_ehci_remove(struct platform_device *pdev)
usb_phy_shutdown(hcd->phy);
usb_remove_hcd(hcd);
- usb_put_hcd(hcd);
clk_disable_unprepare(tegra->clk);
+ usb_put_hcd(hcd);
+
return 0;
}