All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: Johan Hovold <johan@kernel.org>,
	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	stable <stable@vger.kernel.org>, Andrew Lunn <andrew@lunn.ch>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: [PATCH] nvmem: core: fix leaks on registration errors
Date: Wed, 17 May 2017 10:51:05 +0200	[thread overview]
Message-ID: <20170517085105.GR3657@localhost> (raw)
In-Reply-To: <CAHQ1cqE6S8McfPGYa=zfbnC5WY4CTqucbuFXYt6zrMwZiZBiFg@mail.gmail.com>

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@kernel.org> 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@vger.kernel.org>     # 4.3
> > Cc: Andrew Lunn <andrew@lunn.ch>
> > Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> > Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > ---
> 
> I submitted identical patch to fix this about a month ago here:
> 
> lkml.kernel.org/r/20170418142454.23921-1-andrew.smirnov@gmail.com

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. ;) 

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.

> so, FWIW,
> 
> Acked-by: Andrey Smirnov <andrew.smirnov@gmail.com>

Thanks,
Johan

> >  drivers/nvmem/core.c | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> > index 8c830a80a648..6cf916d9db6d 100644
> > --- a/drivers/nvmem/core.c
> > +++ b/drivers/nvmem/core.c
> > @@ -489,21 +489,24 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
> >
> >         rval = device_add(&nvmem->dev);
> >         if (rval)
> > -               goto out;
> > +               goto err_put_device;
> >
> >         if (config->compat) {
> >                 rval = nvmem_setup_compat(nvmem, config);
> >                 if (rval)
> > -                       goto out;
> > +                       goto err_device_del;
> >         }
> >
> >         if (config->cells)
> >                 nvmem_add_cells(nvmem, config);
> >
> >         return nvmem;
> > -out:
> > -       ida_simple_remove(&nvmem_ida, nvmem->id);
> > -       kfree(nvmem);
> > +
> > +err_device_del:
> > +       device_del(&nvmem->dev);
> > +err_put_device:
> > +       put_device(&nvmem->dev);
> > +
> >         return ERR_PTR(rval);
> >  }
> >  EXPORT_SYMBOL_GPL(nvmem_register);
> > --
> > 2.13.0
> >

  reply	other threads:[~2017-05-17  8:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-16 13:44 [PATCH] nvmem: core: fix leaks on registration errors Johan Hovold
2017-05-16 21:28 ` Andrey Smirnov
2017-05-17  8:51   ` Johan Hovold [this message]
2017-05-17 13:06     ` Andrey Smirnov
2017-06-07 14:57 ` Srinivas Kandagatla

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=20170517085105.GR3657@localhost \
    --to=johan@kernel.org \
    --cc=andrew.smirnov@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=stable@vger.kernel.org \
    /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.