dev->of_node overwrite can cause device loading with different driver
Lothar Waßmann
LW at KARO-electronics.de
Wed Sep 18 04:49:19 EDT 2013
Hi,
Markus Pargmann writes:
> On Sat, Sep 14, 2013 at 01:28:09PM +0100, Russell King - ARM Linux wrote:
> > On Sat, Sep 14, 2013 at 05:17:29AM -0700, Greg Kroah-Hartman wrote:
> > > On Sat, Sep 14, 2013 at 09:16:53AM +0200, Markus Pargmann wrote:
> > > > 3. We could fix up all drivers that change the of_node. But there are
> > > > ARM DT frameworks that require a device struct as parameter instead
> > > > of a device_node parameter (e.g. soc-generic-dmaengine-pcm). So a
> > > > driver core, initialized by a glue driver with DT bindings, has to
> > > > set dev->of_node to use those frameworks. I think it is strange to
> > > > have such DT framework interfaces if a driver is not supposed to
> > > > overwrite dev->of_node permanently.
> > >
> > > How about any driver that does muck with this structure, restore it
> > > properly if their probe() function fails? Yes, you show that this is
> > > going to be tricky in some places (i.e. musb), but it makes sense that
> > > the burden of fixing this issue would rest on them, as they are the ones
> > > causing this problem, right?
> >
> > It's not about overwriting at all.
>
> musb does not overwrite of_node, but other drivers do, e.g. USB chipidea
> core driver which uses its parent of_node. When probe fails in this
> case, we could end up with similar issues.
>
This has already been fixed in commit:
e98b44e9 usb: chipidea: prevent endless loop registering platform_devices when probe fails
in linux-next
Lothar Waßmann
--
___________________________________________________________
Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996
www.karo-electronics.de | info at karo-electronics.de
___________________________________________________________
More information about the linux-arm-kernel
mailing list