summaryrefslogtreecommitdiff
path: root/drivers/usb/host/xhci-tegra.c
diff options
context:
space:
mode:
authorJC Kuo <jckuo@nvidia.com>2013-09-13 15:06:50 +0800
committerAjay Nandakumar <anandakumarm@nvidia.com>2013-10-03 19:17:44 +0530
commit8b6f2b8b513fb3ec296d0757394c1babe34d5468 (patch)
treecc30e14430a3ac4f1305ecf082dff09e1c5837d5 /drivers/usb/host/xhci-tegra.c
parent65ccac198ccb78fd6ae0dad55f6f5c3f4eadb513 (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.c11
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);