summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>2026-07-29 10:46:36 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-07-31 14:15:53 +0200
commitc9cde184269d5fd0854d9ffda3ea678888dc44b9 (patch)
tree039671ae8782a30f5a53ea2788a9cc520740da75
parent06b360155d1281931fc6a3363dc6323a7858c1f0 (diff)
downloadlinux-c9cde184269d5fd0854d9ffda3ea678888dc44b9.tar.gz
linux-c9cde184269d5fd0854d9ffda3ea678888dc44b9.zip
nvmem: check the return value of gpiod_set_value_cansleep()
GPIO setters now return integer values and can indicate failures in lower abstraction layers. Check the return values of gpiod_set_value_cansleep() calls in nvmem core. Reviewed-by: Johan Hovold <johan@kernel.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Tested-by: Loic Poulain <loic.poulain@oss.qualcomm.com> Signed-off-by: Srinivas Kandagatla <srini@kernel.org> Link: https://patch.msgid.link/20260729094647.111468-4-srini@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/nvmem/core.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 40a00f650261..51ebe82ade93 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -64,16 +64,22 @@ static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
static int __nvmem_reg_write(struct nvmem_device *nvmem, unsigned int offset,
void *val, size_t bytes)
{
- int ret;
+ int ret, wr_ok;
if (!nvmem->reg_write)
return -EOPNOTSUPP;
- gpiod_set_value_cansleep(nvmem->wp_gpio, 0);
- ret = nvmem->reg_write(nvmem->priv, offset, val, bytes);
- gpiod_set_value_cansleep(nvmem->wp_gpio, 1);
+ ret = gpiod_set_value_cansleep(nvmem->wp_gpio, 0);
+ if (ret)
+ return ret;
- return ret;
+ wr_ok = nvmem->reg_write(nvmem->priv, offset, val, bytes);
+
+ ret = gpiod_set_value_cansleep(nvmem->wp_gpio, 1);
+ if (ret)
+ return ret;
+
+ return wr_ok;
}
static int nvmem_access_with_keepouts(struct nvmem_device *nvmem,