Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932539AbbDUUN7 (ORCPT ); Tue, 21 Apr 2015 16:13:59 -0400 Received: from mail-wi0-f180.google.com ([209.85.212.180]:36710 "EHLO mail-wi0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755477AbbDUUNz (ORCPT ); Tue, 21 Apr 2015 16:13:55 -0400 MIME-Version: 1.0 In-Reply-To: <1429604702-14157-2-git-send-email-ricardo.ribalda@gmail.com> References: <1429604702-14157-1-git-send-email-ricardo.ribalda@gmail.com> <1429604702-14157-2-git-send-email-ricardo.ribalda@gmail.com> From: Rob Herring Date: Tue, 21 Apr 2015 15:13:33 -0500 Message-ID: Subject: Re: [PATCH 2/2 v2] of/platform: Use platform_device interface To: Ricardo Ribalda Delgado Cc: Grant Likely , Rob Herring , Andrew Morton , Bjorn Helgaas , Vivek Goyal , Jakub Sitnicki , Mike Travis , Jiang Liu , Thierry Reding , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1799 Lines: 48 On Tue, Apr 21, 2015 at 3:25 AM, Ricardo Ribalda Delgado 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 > --- > 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 linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/