Re: [PATCH] mfd: cros_ec: remove unused __remove function

From: Arnd Bergmann
Date: Thu Jun 14 2018 - 06:36:05 EST

On Tue, Jun 12, 2018 at 9:53 PM, Gwendal Grignou <gwendal@xxxxxxxxxxxx> wrote:
> On Sun, Jun 10, 2018 at 11:08 PM Lee Jones <lee.jones@xxxxxxxxxx> wrote:
>> On Fri, 08 Jun 2018, Benson Leung wrote:
>> >
>> > On Fri, Jun 08, 2018 at 04:48:06PM +0200, Arnd Bergmann wrote:
>> > > This function is no longer called, so we get a harmless
>> > > warning until it is removed as well:
>> > >
>> > > drivers/mfd/cros_ec_dev.c:265:13: error: '__remove' defined but not used [-Werror=unused-function]
>> > >
>> > > Fixes: 3aa2177e4787 ("mfd: cros_ec: Use devm_kzalloc for private data")
>> >
>> > Gwendal, in PATCH v2 of
>> > you mentioned that you readded the __remove to avoid a warning when built
>> > as a module. Can you explain what's going on?
>> Yes please, and quickly. I'm going to sent the patch-set today. If I
>> don't hear from you promptly, I'll probably pull the patch!
> I readded it because when cros_ec_dev is loaded as module, I get a
> warning on dmesg when unloading:
> """Device 'cros_pd' [or 'cros_ec'] does not have a release() function,
> it is broken and must be fixed."""
> The warning comes from device_release(). Given I get a warning when I
> remove the release function or when I leave it empty. Let's pull the
> patch.

I had not realized that this function was supposed to be the .release
callback for a device, only that it was not being called at all.

The runtime warning you get is obviously correct and you do need a
.release function in the device that will free the memory for the
cros_ec_dev structure when the last reference to the device goes away.

Please send a fix for this, replacing the incorrect devm_kzalloc with
a working allocation/deallocation.