ARM: pxa: fix pxa3xx-u2d crash when ULPI not used
authorMarek Vasut <marek.vasut@gmail.com>
Fri, 3 Sep 2010 20:35:46 +0000 (22:35 +0200)
committerEric Miao <eric.y.miao@gmail.com>
Fri, 8 Oct 2010 08:21:18 +0000 (16:21 +0800)
In case the pxa3xx-u2d driver isn't used, probing of ohci-pxa27x will cause an
ugly kernel crash (NULL pointer dereference in pxa3xx_u2d_start_hc(), because
struct u2d is NULL and clk_enable() call will crash the kernel, trying to access
it).

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-pxa/pxa3xx-ulpi.c

index e57439e..ce7168b 100644 (file)
@@ -252,6 +252,10 @@ int pxa3xx_u2d_start_hc(struct usb_bus *host)
 {
        int err = 0;
 
+       /* In case the PXA3xx ULPI isn't used, do nothing. */
+       if (!u2d)
+               return 0;
+
        clk_enable(u2d->clk);
 
        if (cpu_is_pxa310()) {
@@ -264,6 +268,10 @@ int pxa3xx_u2d_start_hc(struct usb_bus *host)
 
 void pxa3xx_u2d_stop_hc(struct usb_bus *host)
 {
+       /* In case the PXA3xx ULPI isn't used, do nothing. */
+       if (!u2d)
+               return;
+
        if (cpu_is_pxa310())
                pxa310_stop_otg_hc();