On Tue, Apr 21, 2015 at 3:25 AM, Ricardo Ribalda Delgado <ricardo.ribalda@xxxxxxxxx> wrote: > of_platform_device_create_pdata() was using of_device_add() to create > the devices, but of_platform_device_destroy was using > of_platform_device_destroy(). > > of_device_add(), do not call insert_resource(), which initializes the > parent field of the resource structure, needed by release_resource(), > called by of_platform_device_destroy(). This is because some DTs have overlapping resources and doing this would break things. If you look at the git history, this was fixed and then reverted by Grant. Rob > This leads to a NULL pointer deference. > > This patch, replaces of_device_add() with platform_device_data(). > > Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@xxxxxxxxx> > --- > drivers/of/platform.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/platform.c b/drivers/of/platform.c > index a01f57c..f011f57 100644 > --- a/drivers/of/platform.c > +++ b/drivers/of/platform.c > @@ -183,8 +183,9 @@ static struct platform_device *of_platform_device_create_pdata( > dev->dev.bus = &platform_bus_type; > dev->dev.platform_data = platform_data; > of_dma_configure(&dev->dev, dev->dev.of_node); > + dev->name = dev_name(&dev->dev); > > - if (of_device_add(dev) != 0) { > + if (platform_device_add(dev) != 0) { > of_dma_deconfigure(&dev->dev); > platform_device_put(dev); > goto err_clear_flag; > -- > 2.1.4 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html