diff options
author | JC Kuo <jckuo@nvidia.com> | 2013-09-13 15:06:50 +0800 |
---|---|---|
committer | Ajay Nandakumar <anandakumarm@nvidia.com> | 2013-10-03 19:17:44 +0530 |
commit | 8b6f2b8b513fb3ec296d0757394c1babe34d5468 (patch) | |
tree | cc30e14430a3ac4f1305ecf082dff09e1c5837d5 /drivers/usb/host/xhci-tegra.c | |
parent | 65ccac198ccb78fd6ae0dad55f6f5c3f4eadb513 (diff) |
xhci: tegra: fix kernel panic in tegra_xhci_remove
tegra_xhci_remove() calls usb_unregister_notifier() with parameters
are NULL pointers. That causes kernel panic. This change fixes it.
bug 1368024
Change-Id: I10ea852659afece3b0ae18c2989ad85ee392e3c3
Signed-off-by: JC Kuo <jckuo@nvidia.com>
Reviewed-on: http://git-master/r/274150
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Tested-by: Sachin Nikam <snikam@nvidia.com>
(cherry picked from commit 10906950e03608b6a4a5322693bf9793e1ba175d)
Signed-off-by: Ajay Nandakumar <anandakumarm@nvidia.com>
Diffstat (limited to 'drivers/usb/host/xhci-tegra.c')
-rw-r--r-- | drivers/usb/host/xhci-tegra.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c index c0a2ace5644a..d54d83f48469 100644 --- a/drivers/usb/host/xhci-tegra.c +++ b/drivers/usb/host/xhci-tegra.c @@ -4346,8 +4346,9 @@ err_deinit_usb2_clocks: err_deinit_tegra_xusb_regulator: tegra_xusb_regulator_deinit(tegra); err_deinit_xusb_partition_clk: - usb_unregister_notifier(tegra->transceiver, - &tegra->otgnb); + if (tegra->transceiver) + usb_unregister_notifier(tegra->transceiver, &tegra->otgnb); + tegra_xusb_partitions_clk_deinit(tegra); return ret; @@ -4383,8 +4384,10 @@ static int tegra_xhci_remove(struct platform_device *pdev) deinit_firmware(tegra); fw_log_deinit(tegra); tegra_xusb_regulator_deinit(tegra); - usb_unregister_notifier(tegra->transceiver, - &tegra->otgnb); + + if (tegra->transceiver) + usb_unregister_notifier(tegra->transceiver, &tegra->otgnb); + tegra_usb2_clocks_deinit(tegra); if (!tegra->hc_in_elpg) tegra_xusb_partitions_clk_deinit(tegra); |