lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240725112126.415071-1-joychakr@google.com>
Date: Thu, 25 Jul 2024 11:21:26 +0000
From: Joy Chakraborty <joychakr@...gle.com>
To: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>, 
	Dan Carpenter <dan.carpenter@...aro.org>
Cc: linux-kernel@...r.kernel.org, Joy Chakraborty <joychakr@...gle.com>
Subject: [PATCH] nvmem: core: WARN_ONCE on nvmem reg_read/write() returning
 positive values

Nvmem core currently expects 0 to be returned on successful read/write
and negative for failure from nvmem producers.
Warn incase any nvmem producer returns positive values which might
happen if any producer ends up returning the number of bytes read or
written.

Signed-off-by: Joy Chakraborty <joychakr@...gle.com>
---
 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 e1ec3b7200d7..0a42e6a0e8bb 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -58,10 +58,13 @@ static BLOCKING_NOTIFIER_HEAD(nvmem_notifier);
 static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
 			    void *val, size_t bytes)
 {
+	int ret = -EINVAL;
+
 	if (nvmem->reg_read)
-		return nvmem->reg_read(nvmem->priv, offset, val, bytes);
+		ret = nvmem->reg_read(nvmem->priv, offset, val, bytes);
 
-	return -EINVAL;
+	WARN_ONCE(ret > 0, "nvmem reg_read should not return positive value, please return 0 on success");
+	return ret;
 }
 
 static int __nvmem_reg_write(struct nvmem_device *nvmem, unsigned int offset,
@@ -73,6 +76,7 @@ static int __nvmem_reg_write(struct nvmem_device *nvmem, unsigned int offset,
 		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);
+		WARN_ONCE(ret > 0, "nvmem reg_write should not return positive value, please return 0 on success");
 		return ret;
 	}
 
-- 
2.45.2.1089.g2a221341d9-goog


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ