Message ID | 20200221154837.18845-2-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | nvmem/gpio: fix resource management | expand |
On 21/02/2020 15:48, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bgolaszewski@baylibre.com> > > We need to free the ida mapping and nvmem struct if the write-protect > GPIO lookup fails. > > Fixes: 2a127da461a9 ("nvmem: add support for the write-protect pin") > Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Applied this and 5/5 Thanks, srini > --- > drivers/nvmem/core.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c > index 503da67dde06..2758d90d63b7 100644 > --- a/drivers/nvmem/core.c > +++ b/drivers/nvmem/core.c > @@ -353,8 +353,12 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) > else > nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp", > GPIOD_OUT_HIGH); > - if (IS_ERR(nvmem->wp_gpio)) > - return ERR_CAST(nvmem->wp_gpio); > + if (IS_ERR(nvmem->wp_gpio)) { > + ida_simple_remove(&nvmem_ida, nvmem->id); > + rval = PTR_ERR(nvmem->wp_gpio); > + kfree(nvmem); > + return ERR_PTR(rval); > + } > > kref_init(&nvmem->refcnt); > INIT_LIST_HEAD(&nvmem->cells); >
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 503da67dde06..2758d90d63b7 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -353,8 +353,12 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) else nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp", GPIOD_OUT_HIGH); - if (IS_ERR(nvmem->wp_gpio)) - return ERR_CAST(nvmem->wp_gpio); + if (IS_ERR(nvmem->wp_gpio)) { + ida_simple_remove(&nvmem_ida, nvmem->id); + rval = PTR_ERR(nvmem->wp_gpio); + kfree(nvmem); + return ERR_PTR(rval); + } kref_init(&nvmem->refcnt); INIT_LIST_HEAD(&nvmem->cells);