From patchwork Fri Nov 11 15:25:01 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [1/2] ARM: mx28evk: remove flexcan_pdata __initconst attribute Date: Fri, 11 Nov 2011 05:25:01 -0000 From: Dong Aisheng X-Patchwork-Id: 125190 Message-Id: <65EE16ACC360FA4D99C96DC085B3F7722CECED@039-SN1MPN1-002.039d.mgd.msft.net> To: =?iso-8859-1?Q?Uwe_Kleine-K=F6nig?= Cc: Guo Shawn-R65073 , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "linux-arm-kernel@lists.infradead.org" , "w.sang@pengutronix.de" > -----Original Message----- > From: Uwe Kleine-König [mailto:u.kleine-koenig@pengutronix.de] > Sent: Friday, November 11, 2011 11:06 PM > To: Dong Aisheng-B29396 > Cc: linux-arm-kernel@lists.infradead.org; kernel@pengutronix.de; > s.hauer@pengutronix.de; w.sang@pengutronix.de; Guo Shawn-R65073 > Subject: Re: [PATCH 1/2] ARM: mx28evk: remove flexcan_pdata __initconst > attribute > > On Fri, Nov 11, 2011 at 11:12:39PM +0800, Dong Aisheng wrote: > > The flexcan driver still uses it after init. > As "it" is a copy of flexcan_pdata it's completely OK for the driver to > use it. > > What is the exact problem you want to address? > Sorry, I just checked the code and found platform_device_add_data will Add a copy of platform specific data. Originally I thought the driver may access the freed pdata after init. So, does it mean that every pdata of pdevice added by mxs_add_platform_device_dmamask can be prefixed by __init*? And, below change seems correct? Regards Dong Aisheng diff --git a/arch/arm/mach-mxs/module-tx28.c b/arch/arm/mach-mxs/module-tx28.c index 0fcff47..a096cca 100644 --- a/arch/arm/mach-mxs/module-tx28.c +++ b/arch/arm/mach-mxs/module-tx28.c @@ -66,11 +66,11 @@ static const iomux_cfg_t tx28_fec1_pads[] __initconst = { MX28_PAD_ENET0_CRS__ENET1_RX_EN, }; -static struct fec_platform_data tx28_fec0_data = { +static struct fec_platform_data __initconst tx28_fec0_data = { .phy = PHY_INTERFACE_MODE_RMII, }; -static struct fec_platform_data tx28_fec1_data = { +static struct fec_platform_data __initconst tx28_fec1_data = { .phy = PHY_INTERFACE_MODE_RMII, };