From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA5643546D0 for ; Tue, 19 May 2026 15:55:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779206133; cv=none; b=PGP0ljysz4fDmjHGfLtnioryRyhEzMUhW6470EXdFTICY+TtYk9EPFFmewxR0F79vBVhyv4Qaqhjoid0w73rnUxOYu4JkTaSjeQfkfSvXBb7bWI5A/EGw7jNQxCWCyctOT8Jmkg95M6bry+aAftHE6BfW+Fg0Pr21w8PksD2eDU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779206133; c=relaxed/simple; bh=ILV1zBIEZfGGeJMaZ/H6FXubw/Td4oXP0ow4a8zVGnI=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=WYQqdvkhssvAypoEdw2ppCTwfeGnASKqK3zytabmVXYZR3/qMNyyrqc4FbZ4bVfXtB1y7v9UBS+KKxCzwXegTcYa0SbEvTHfDHq6fT78jJEfObVU7SYDfYcHDAe2XER6KtghfehzeXHhqSArxy1V4EVtN/gMaSeSftdm/Ki/Pxg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XiW/xiVw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XiW/xiVw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F607C2BCB3; Tue, 19 May 2026 15:55:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779206132; bh=ILV1zBIEZfGGeJMaZ/H6FXubw/Td4oXP0ow4a8zVGnI=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=XiW/xiVwQlPFWsssPpCYa4Y7vU5reP6n23a7nSCLOtMvqFwcfEFQG7GJadhzTnFCm 9tamKcIaVKpJWbjGRTIDxsSdVSsY4ugfFEScycMDxvuc480cpeGKoa98eD7xtoe3/7 gqqnoLhKOZ0A4OSlB23WUoolikAfrCqSOEt389Yw1yO/elPKy3zxxwKQsxmWq+CU2F m10oSpAANdwwCOumrOgd3hQ+fkzmH0w7bYIi1Vy7rNai8smrqEJflX5tvLYpHYFo55 X4OCvZZ3Ko6HcfHEhGZTVlNhVWdZPCEnbw/TkPrkxuuAXWrJ8QxvvEt2ufEMdtgi87 2c1eGToqi1eSA== Message-ID: <6afd49c9-8389-4dfa-b1c5-c724d95019d5@kernel.org> Date: Tue, 19 May 2026 16:55:30 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] nvmem: layouts: u-boot-env: check earlier for ethaddr length To: Tomasz Maciej Nowak , =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= , Srinivas Kandagatla , linux-kernel@vger.kernel.org Cc: Tomasz Maciej Nowak References: <20260504172103.18061-1-tmn505@terefe.re> Content-Language: en-US From: Srinivas Kandagatla In-Reply-To: <20260504172103.18061-1-tmn505@terefe.re> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 5/4/26 6:19 PM, Tomasz Maciej Nowak wrote: > From: Tomasz Maciej Nowak > > 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 > --- > > v2 > Better clarification in commit message > > 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..dd3f541728bf 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)) { if (!strcmp(var, "ethaddr") && info.bytes == MAC_ADDR_STR_LEN) instead? > info.raw_len = strlen(value); > info.bytes = ETH_ALEN; > info.read_post_process = u_boot_env_read_post_process_ethaddr;