All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurentiu Tudor <laurentiu.tudor@nxp.com>
To: Stuart Yoder <stuart.yoder@nxp.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
Cc: "devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
	"arnd@arndb.de" <arnd@arndb.de>,
	Ruxandra Ioana Radulescu <ruxandra.radulescu@nxp.com>,
	"Roy Pledge" <roy.pledge@nxp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"agraf@suse.de" <agraf@suse.de>,
	"Catalin Horghidan" <catalin.horghidan@nxp.com>,
	Leo Li <leoyang.li@nxp.com>
Subject: Re: [PATCH 3/9] staging: fsl-mc: add device release    callback
Date: Fri, 3 Feb 2017 15:53:01 +0000	[thread overview]
Message-ID: <5894A75C.9050505@nxp.com> (raw)
In-Reply-To: <VI1PR0401MB26382051D2AA823B0BDB14F18D4F0@VI1PR0401MB2638.eurprd04.prod.outlook.com>



On 02/03/2017 02:02 AM, Stuart Yoder wrote:
>
>> -----Original Message-----
>> From: upstream-release-bounces@linux.freescale.net [mailto:upstream-release-
>> bounces@linux.freescale.net] On Behalf Of laurentiu.tudor@nxp.com
>> Sent: Wednesday, February 01, 2017 5:43 AM
>> To: gregkh@linuxfoundation.org
>> Cc: devel@driverdev.osuosl.org; arnd@arndb.de; Ruxandra Ioana Radulescu <ruxandra.radulescu@nxp.com>;
>> Roy Pledge <roy.pledge@nxp.com>; linux-kernel@vger.kernel.org; agraf@suse.de; Catalin Horghidan
>> <catalin.horghidan@nxp.com>; Leo Li <leoyang.li@nxp.com>; Stuart Yoder <stuart.yoder@nxp.com>;
>> Laurentiu Tudor <laurentiu.tudor@nxp.com>
>> Subject: [upstream-release] [PATCH 3/9] staging: fsl-mc: add device release callback
>>
>> From: Laurentiu Tudor <laurentiu.tudor@nxp.com>
>>
>> When hot unplugging a mc-bus device the kernel displays
>> this pertinent message, followed by a stack dump:
>>      "Device 'foo.N' does not have a release() function,
>>       it is broken and must be fixed."
>> Add the required callback to fix.
>>
>> Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
>> ---
>>   drivers/staging/fsl-mc/bus/fsl-mc-bus.c | 17 +++++++++++++++++
>>   1 file changed, 17 insertions(+)
>>
>> diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
>> index 7c6a43b..6601bde 100644
>> --- a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
>> +++ b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
>> @@ -419,6 +419,22 @@ bool fsl_mc_is_root_dprc(struct device *dev)
>>   	return dev == root_dprc_dev;
>>   }
>>
>> +static void fsl_mc_device_release(struct device *dev)
>> +{
>> +	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
>> +	struct fsl_mc_bus *mc_bus = NULL;
>> +
>> +	kfree(mc_dev->regions);
>> +
>> +	if (strcmp(mc_dev->obj_desc.type, "dprc") == 0)
>> +		mc_bus = to_fsl_mc_bus(mc_dev);
>> +
>> +	if (mc_bus)
>> +		devm_kfree(mc_dev->dev.parent, mc_bus);
>> +	else
>> +		kmem_cache_free(mc_dev_cache, mc_dev);
>> +}
>> +
>>   /**
>>    * Add a newly discovered fsl-mc device to be visible in Linux
>>    */
>> @@ -460,6 +476,7 @@ int fsl_mc_device_add(struct dprc_obj_desc *obj_desc,
>>   	device_initialize(&mc_dev->dev);
>>   	mc_dev->dev.parent = parent_dev;
>>   	mc_dev->dev.bus = &fsl_mc_bus_type;
>> +	mc_dev->dev.release = fsl_mc_device_release;
>>   	dev_set_name(&mc_dev->dev, "%s.%d", obj_desc->type, obj_desc->id);
>>
>>   	if (strcmp(obj_desc->type, "dprc") == 0) {
>> --
>
> With this patch applied, you still have this:
>
> void fsl_mc_device_remove(struct fsl_mc_device *mc_dev)
> {
>          struct fsl_mc_bus *mc_bus = NULL;
>
>          kfree(mc_dev->regions);
>
>          /*
>           * The device-specific remove callback will get invoked by device_del()
>           */
>          device_del(&mc_dev->dev);
>          put_device(&mc_dev->dev);
>
>          if (strcmp(mc_dev->obj_desc.type, "dprc") == 0)
>                  mc_bus = to_fsl_mc_bus(mc_dev);
>
>          if (mc_bus)
>                  devm_kfree(mc_dev->dev.parent, mc_bus);
>          else
>                  kmem_cache_free(mc_dev_cache, mc_dev);
> }
>
> ...i.e. you are doing the same thing in 2 places.  You
> need to remove the kfree/devm_kfree/ kmem_cache_free,
> here, no?
>

Right, thanks for spotting. I started working on a v2
of the series.

---
Best Regards, Laurentiu

  reply	other threads:[~2017-02-03 15:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-03  0:02 [PATCH 3/9] staging: fsl-mc: add device release callback Stuart Yoder
2017-02-03 15:53 ` Laurentiu Tudor [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-02-01 11:43 [PATCH 0/9] staging: fsl-mc: fixes and cleanups laurentiu.tudor
2017-02-01 11:43 ` [PATCH 3/9] staging: fsl-mc: add device release callback laurentiu.tudor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5894A75C.9050505@nxp.com \
    --to=laurentiu.tudor@nxp.com \
    --cc=agraf@suse.de \
    --cc=arnd@arndb.de \
    --cc=catalin.horghidan@nxp.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=leoyang.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roy.pledge@nxp.com \
    --cc=ruxandra.radulescu@nxp.com \
    --cc=stuart.yoder@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.