diff options
| author | Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> | 2026-07-29 10:46:36 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-07-31 14:15:53 +0200 |
| commit | c9cde184269d5fd0854d9ffda3ea678888dc44b9 (patch) | |
| tree | 039671ae8782a30f5a53ea2788a9cc520740da75 | |
| parent | 06b360155d1281931fc6a3363dc6323a7858c1f0 (diff) | |
| download | linux-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.c | 16 |
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, |
