diff options
author | Vinayak Pane <vpane@nvidia.com> | 2012-07-17 19:06:54 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-08-10 22:49:08 -0700 |
commit | 675dfd18c952e6cf5748aaa305086d86b0358582 (patch) | |
tree | 13e9cfc3fc7a94e4e8490f944e61d289d1ce3354 /arch/arm/mach-tegra/board-enterprise.c | |
parent | 7c022b1b9bc18c5f2156c67701a0fe382e024a85 (diff) |
arm: tegra: xmm: device set to null in unregister
hsic_unregister is being called multiple times
during two step enumeration process of xmm.
In failure cases when enumeration does not
complete properly, kernel panic is seen because
of extra unregister-ehci device.
Bug 1016593
Change-Id: Ibaeb20ed0dab0e906741fdfad78f7d89a3672f60
Signed-off-by: Vinayak Pane <vpane@nvidia.com>
Reviewed-on: http://git-master/r/116626
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-enterprise.c')
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise.c b/arch/arm/mach-tegra/board-enterprise.c index 46078a82a9b1..d918a1fb3518 100644 --- a/arch/arm/mach-tegra/board-enterprise.c +++ b/arch/arm/mach-tegra/board-enterprise.c @@ -832,9 +832,15 @@ error: return NULL; } -void tegra_usb_hsic_host_unregister(struct platform_device *pdev) +void tegra_usb_hsic_host_unregister(struct platform_device **platdev) { - platform_device_unregister(pdev); + struct platform_device *pdev = *platdev; + + if (pdev && &pdev->dev) { + platform_device_unregister(pdev); + *platdev = NULL; + } else + pr_err("%s: no platform device\n", __func__); } static void enterprise_usb_init(void) |