[PATCH v3] nvmem: layouts: u-boot-env: check earlier for ethaddr length

Tomasz Maciej Nowak posted 1 patch 5 days, 4 hours ago
drivers/nvmem/layouts/u-boot-env.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
[PATCH v3] nvmem: layouts: u-boot-env: check earlier for ethaddr length
Posted by Tomasz Maciej Nowak 5 days, 4 hours ago
From: Tomasz Maciej Nowak <tmn505@gmail.com>

Unfortunately the ethaddr value in U-Boot environment might be enclosed
in single/double quotes or be something completely different. This can
make it different than MAC_ADDR_STR_LEN, which results in EINVAL
returned by ethaddr post process. Move the check for length earlier,
to skip post processing, so nvmem could still present ethaddr value as
a string if the value doesn't match MAC_ADDR_STR_LEN.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
---

v3
Drop redundant parenthesis

v2
Better clarification in commit message
Link: https://lore.kernel.org/all/20260504172103.18061-1-tmn505@terefe.re/

v1
Link: https://lore.kernel.org/all/20260319171236.48325-1-tmn505@terefe.re/

 drivers/nvmem/layouts/u-boot-env.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/nvmem/layouts/u-boot-env.c b/drivers/nvmem/layouts/u-boot-env.c
index f27f387bb52a..33ec2350386f 100644
--- a/drivers/nvmem/layouts/u-boot-env.c
+++ b/drivers/nvmem/layouts/u-boot-env.c
@@ -38,9 +38,6 @@ static int u_boot_env_read_post_process_ethaddr(void *context, const char *id, i
 {
 	u8 mac[ETH_ALEN];
 
-	if (bytes != MAC_ADDR_STR_LEN)
-		return -EINVAL;
-
 	if (!mac_pton(buf, mac))
 		return -EINVAL;
 
@@ -75,7 +72,7 @@ static int u_boot_env_parse_cells(struct device *dev, struct nvmem_device *nvmem
 		info.offset = data_offset + value - data;
 		info.bytes = strlen(value);
 		info.np = of_get_child_by_name(dev->of_node, info.name);
-		if (!strcmp(var, "ethaddr")) {
+		if (!strcmp(var, "ethaddr") && info.bytes == MAC_ADDR_STR_LEN) {
 			info.raw_len = strlen(value);
 			info.bytes = ETH_ALEN;
 			info.read_post_process = u_boot_env_read_post_process_ethaddr;
-- 
2.54.0
Re: [PATCH v3] nvmem: layouts: u-boot-env: check earlier for ethaddr length
Posted by Srinivas Kandagatla 4 days, 17 hours ago
On Tue, 19 May 2026 22:19:25 +0200, Tomasz Maciej Nowak wrote:
> Unfortunately the ethaddr value in U-Boot environment might be enclosed
> in single/double quotes or be something completely different. This can
> make it different than MAC_ADDR_STR_LEN, which results in EINVAL
> returned by ethaddr post process. Move the check for length earlier,
> to skip post processing, so nvmem could still present ethaddr value as
> a string if the value doesn't match MAC_ADDR_STR_LEN.
> 
> [...]

Applied, thanks!

[1/1] nvmem: layouts: u-boot-env: check earlier for ethaddr length
      commit: 8858aeffa287ae49d50ffcb69c5dddcf424f812f

Best regards,
-- 
Srinivas Kandagatla <srini@kernel.org>