From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> We can obtain the write-protect GPIO in nvmem_register() by requesting it ourselves or by storing the gpio_desc passed in nvmem_config. In the latter case we need to increase the reference count so that it gets freed correctly. Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> --- drivers/nvmem/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 096c7bae9e74..b7b1e3194453 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -349,11 +349,13 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) return ERR_PTR(rval); } - if (config->wp_gpio) + if (config->wp_gpio) { nvmem->wp_gpio = config->wp_gpio; - else + gpiod_ref(config->wp_gpio); + } else { nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp", GPIOD_OUT_HIGH); + } if (IS_ERR(nvmem->wp_gpio)) goto err_ida_remove; -- 2.25.0