All of lore.kernel.org
 help / color / mirror / Atom feed
From: marek.vasut@gmail.com (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: pxa: Fix pxa3xx-u2d crash when ULPI not used
Date: Sun, 5 Sep 2010 10:25:49 +0200	[thread overview]
Message-ID: <201009051025.49256.marek.vasut@gmail.com> (raw)
In-Reply-To: <4C8351F0.2040801@compulab.co.il>

Dne Ne 5. z??? 2010 10:16:48 Igor Grinberg napsal(a):
>  On 09/05/10 11:01, Marek Vasut wrote:
> > Dne Ne 5. z??? 2010 09:54:31 Igor Grinberg napsal(a):
> >>  On 09/03/10 23:35, Marek Vasut wrote:
> >>> 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).
> >> 
> >> ohci code checks for pxa3xx cpu and only then runs start/stop hc.
> > 
> > Exactly ... and in case "struct pxa3xx_u2d_ulpi *u2d" is NULL, clk_enable
> > will crash the kernel.
> > 
> >> pxa3xx_ulpi.c is compiled if CONFIG_PXA3xx is selected.
> >> The device <-> driver binding should not be a problem, so the
> >> pxa3xx_u2d_probe() will run.
> >> The only case, I see, when struct u2d does not exist is failure of the
> >> probe function. If this is the case, we are having an abnormal execution
> >> and if your patch is dealing with this issue, shouldn't you comment it
> >> as such?
> > 
> > Not at all ... if the pxa3xx-u2d driver isn't loaded at all, the function
> > (start/stop hc) is still called, but struct pxa3xx_u2d_ulpi *u2d is NULL.
> > In this case, if you call clk_enable(u2d->clk), you crash the kernel
> > (because u2d is NULL).
> 
> How, can it happen, that "pxa3xx-u2d driver isn't loaded at all"?
> This can happen only if you rip out the device registration or hack a
> Makefile. I don't see any other way... is there?

If you don't call pxa3xx_set_u2d_info() ?
> 
> > Good night, I'll be back in 8 hrs or so :)
> > 
> >>> Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
> >>> ---
> >>> 
> >>>  arch/arm/mach-pxa/pxa3xx-ulpi.c |    8 ++++++++
> >>>  1 files changed, 8 insertions(+), 0 deletions(-)
> >>> 
> >>> diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c
> >>> b/arch/arm/mach-pxa/pxa3xx-ulpi.c index e57439e..ce7168b 100644
> >>> --- a/arch/arm/mach-pxa/pxa3xx-ulpi.c
> >>> +++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c
> >>> @@ -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();

  reply	other threads:[~2010-09-05  8:25 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-03 20:35 [PATCH] ARM: pxa: Fix pxa3xx-u2d crash when ULPI not used Marek Vasut
2010-09-04  5:38 ` Eric Miao
2010-09-05  7:54 ` Igor Grinberg
2010-09-05  8:01   ` Marek Vasut
2010-09-05  8:16     ` Igor Grinberg
2010-09-05  8:25       ` Marek Vasut [this message]
2010-09-05  8:35         ` Igor Grinberg
2010-09-05 10:43           ` Eric Miao
2010-09-05 13:46             ` Igor Grinberg
2010-09-05 13:58               ` Eric Miao
2010-09-05 14:31                 ` Igor Grinberg
2010-09-05 19:23                   ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201009051025.49256.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.