Re: [PATCH] nvmem: core: fix leaks on registration errors

From: Andrey Smirnov
Date: Wed May 17 2017 - 09:06:58 EST


On Wed, May 17, 2017 at 1:51 AM, Johan Hovold <johan@xxxxxxxxxx> wrote:
> On Tue, May 16, 2017 at 02:28:28PM -0700, Andrey Smirnov wrote:
>> On Tue, May 16, 2017 at 6:44 AM, Johan Hovold <johan@xxxxxxxxxx> wrote:
>> > Make sure to deregister and release the nvmem device and underlying
>> > memory on registration errors.
>> >
>> > Note that the private data must be freed using put_device() once the
>> > struct device has been initialised.
>> >
>> > Also note that there's a related reference leak in the deregistration
>> > function as reported by Mika Westerberg which is being fixed separately.
>> >
>> > Fixes: b6c217ab9be6 ("nvmem: Add backwards compatibility support for older EEPROM drivers.")
>> > Fixes: eace75cfdcf7 ("nvmem: Add a simple NVMEM framework for nvmem providers")
>> > Cc: stable <stable@xxxxxxxxxxxxxxx> # 4.3
>> > Cc: Andrew Lunn <andrew@xxxxxxx>
>> > Cc: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>
>> > Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
>> > Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
>> > ---
>>
>> I submitted identical patch to fix this about a month ago here:
>>
>> lkml.kernel.org/r/20170418142454.23921-1-andrew.smirnov@xxxxxxxxx
>
> Oh, and you fixed up both the registration and deregistration leaks in
> your series too. Looks like the maintainer is on vacation now so perhaps
> we'll see a third independent fix for these bugs soon. ;)
>

Heh, let's hope not :-)

> As for your series, I prefer this version for nvmem_register due to the
> difference in error label naming (named after what they do rather than
> where they are used), but as I also mentioned to Mika, I think just
> adding the missing put_device to nvmem_unregister as you did is
> preferred.
>
> But the important thing is that this gets fixed.
>

Yup, agreed, as long a version of both fixes ends up being applied
it's all good.

Thanks,
Andrey