On Thu, Aug 01, 2013 at 10:43:52AM +0200, Lothar Waßmann wrote:
> Hi,
> 
> Peter Chen writes:
> > On Wed, Jul 31, 2013 at 04:21:16PM +0200, Lothar Waßmann wrote:
> > > commit 40dcd0e introduced the following code to the ci_hdrc_probe()
> > > function:
> > > 
> > > +       if (!dev->of_node && dev->parent)
> > > +               dev->of_node = dev->parent->of_node;
> > > 
> > > This inadvertently associates the ci_hdrc device with the ci_hdrc_imx
> > > driver (which created the ci_hdrc device in the first place).
> > > 
> > > This results in ci_hdrc_imx_probe() being run for the ci_hdrc device
> > > if ci_hdrc_probe() fails for some reason.
> > > ci_hdrc_imx_probe() will happily create a new ci_hdrc platform_device
> > > whose probing will likewise fail and trigger a new invocation of
> > > ci_hdrc_imx_probe() ... ad nauseam.
> > > 
> > 
> > Sorry, I can't understand how it happenes?
> > 
> If ci_hdrc_probe() fails, the driver core will look for other drivers
> that might be able to handle the device. Since the of_node has been
> copied from the parent device "imx_usb" the driver responsible for
> the DT match of of_node (ci_hdrc_imx) will be called.
> 

Good fix.

Reviewed-and-Tested-by: Peter Chen <peter.c...@freescale.com>

-- 

Best Regards,
Peter Chen

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to