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.chen@xxxxxxxxxxxxx> -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html