From patchwork Sun Aug 11 18:44:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ravi Minnikanti X-Patchwork-Id: 1971376 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=marvell.com header.i=@marvell.com header.a=rsa-sha256 header.s=selector1 header.b=BRwaU+bA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Whmll4c8rz1yXh for ; Mon, 12 Aug 2024 04:44:35 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C8B688852E; Sun, 11 Aug 2024 20:44:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=marvell.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=marvell.com header.i=@marvell.com header.b="BRwaU+bA"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 8F7298837D; Sun, 11 Aug 2024 20:44:29 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E90F38845A for ; Sun, 11 Aug 2024 20:44:26 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=marvell.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rminnikanti@marvell.com Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 47BIFZ4k018377; Sun, 11 Aug 2024 11:44:21 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2041.outbound.protection.outlook.com [104.47.70.41]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 40xqkys2p3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 11 Aug 2024 11:44:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rQTY6qGKJfQ/SA/74EUwNZbfL6VHmoZJRav+YBiVpQomZlOQCiSkLKHqj30yWh99+9HDpouIUtvJP6WMy66WqN1GzfXJP2xv0PaurMX5sFC5aqxB4Sf5EG4QRhQK0GLVZCjYtW81DcMWG5aOM5kvOHugs+1FQoMGzQqhAuHhw3mLHquHuq7zEpBmjEKgzH4h8zrl4fFSqw0fXT89bEhRHuGOLDmUpXZwxMP4fYZ5ApZl9auONQZp/pifGsFyXV0wDmTaFMD8LzVNjqyyhW6tkB1BWY3Aztp2ewEC8WVftfh3NnKLgHzNKnIJZu0wY6ZH6c4I0dHghvz4fjqsZV5uPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oCSQO/sJfhcGKpOqp0F1vbkHupZaqX8Iu2O/ViojH+c=; b=LO4t6VBCuVUsiqTRCFG3z2dmxyE4pAZH9j3Ft4q3ki8L973HTkSAm0Q/s269vRGokneK5f6HFoIoeMNPfCfU864rKy9LIhGm/kY5yfWk2pzRKRR6jVCIswErSRy0YXZnDHk7w+OehqJjePgqlfv0dL/R8ZHptWS551+XbH9z1qwfkQwK5t7mYgN0ilWt4+R9SnfRuxob8BRMvBX/wxU9rK/KxAl3svO4IGPg7hrFR/j4LbEms/xfb7H3SFiOeOkirRL/1F4uQ+da+9WVJqC+wpuBNvgFmctzOJUBUqq2kxseK+qXQjc+gssCVH3JWM2zS41Mo0NWN+zxlwiIZnLvuQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oCSQO/sJfhcGKpOqp0F1vbkHupZaqX8Iu2O/ViojH+c=; b=BRwaU+bAX/W1bnOTkVEtPGATO3VRkUNvzzps80hGGusdAafa/+zN0ZgWLPUmMrK5VwDogjXFVLT2Ji5Cp1VwLl2UW9Lw4zmLsC5Ua14f8Uui9zOKlhpYKKsF5zB/6qkAQNv6zwKB4ptJVNel37Sc/MegrCxzFO8YrVwDt9+gzXU= Received: from CO6PR18MB4451.namprd18.prod.outlook.com (2603:10b6:303:138::12) by IA3PR18MB6216.namprd18.prod.outlook.com (2603:10b6:208:522::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7849.20; Sun, 11 Aug 2024 18:44:18 +0000 Received: from CO6PR18MB4451.namprd18.prod.outlook.com ([fe80::4c2b:70d5:95ac:1d6c]) by CO6PR18MB4451.namprd18.prod.outlook.com ([fe80::4c2b:70d5:95ac:1d6c%6]) with mapi id 15.20.7849.019; Sun, 11 Aug 2024 18:44:16 +0000 Message-ID: Date: Sun, 11 Aug 2024 11:44:15 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: [PATCH v3] env: remove vars that are not in default env Content-Language: en-US To: Simon Glass Cc: Tom Rini , quentin.schulz@bootlin.com, U-Boot-Denx References: <03cdd29b-331c-76b0-f6d7-a064552ffd67@marvell.com> From: Ravi Minnikanti In-Reply-To: X-ClientProxiedBy: BYAPR08CA0013.namprd08.prod.outlook.com (2603:10b6:a03:100::26) To CO6PR18MB4451.namprd18.prod.outlook.com (2603:10b6:303:138::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR18MB4451:EE_|IA3PR18MB6216:EE_ X-MS-Office365-Filtering-Correlation-Id: abbb8085-7c7b-48fc-ca14-08dcba359a7a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?c+taOb3UJBBxZucaL5dUf7QQ+wjn9JD?= =?utf-8?q?jeuXwaN5MLq8mlMcDidA+NtuW3CA73L64ZFghpSRcWGbe+XAGwQVB7TagdD+2JViK?= =?utf-8?q?g+USiu7qOgGjg9W/PaAwEuprdHgKCiK341T8OxWOq0oIeWDo5A1Uj2Vqescrq9jBf?= =?utf-8?q?9wg9OWXTYahrEuEtW+ZNuxZ6F9vSl4qwIYWmKJUACuZRgQSKQcIfZjbyIt8mJarNZ?= =?utf-8?q?r/nZn9/EkcnKedbntdnXDtN+kHTJvDfs6FU/vKEX+ALvxqS0oRkkr4ba7bXUmDBAS?= =?utf-8?q?gMBidmkEXkXA0oxx9Q0OkrBe7uk7KppOlrWFAIxQNjK+mOhY185zViBesGRFTQ55B?= =?utf-8?q?2JtdTgo81wkRWsOT7Oh+T0Q3tqDhXHm7WbhdOf4hbLXIDBsVM9l9XhVs5SSZiJ8dN?= =?utf-8?q?71W9Fllpjs8X236LJxk4Exyr4J/4nI8O27q222PNVDXEm0FOGJHHuvlh5Fu5hVDEz?= =?utf-8?q?wG/EedqmITJzRKlyiUVtsJTw2UjKOJ5UpyZotc2t2AD//7xbMUwdd3xQcZLaq/chf?= =?utf-8?q?xdCHF+eRft6AtbRCfr/E9ZOSueqR0APr1MHKG7trZDL0k4qbMMN9B2Q4PgPOX++9t?= =?utf-8?q?bni/2Du8HdpUXDrZ2J6TDzIrl26SEd+6vW/otWjHIssqXL3GXpZdCh4vuWgX9ztQM?= =?utf-8?q?wW7pIYbs1VdRfEjtNrFjhfQD0qW6lWFOfgMhwn9abdtZSIntnRMm1BL2ZYP7I5TtQ?= =?utf-8?q?ipyvWvxw2QKuh7xGxWSE+5iNwlDAr2TOr86AaY3PTIru4FHT5w5zpYxL7uKYIxtK+?= =?utf-8?q?224svw4ViHd14JKmw77qjbt4aDEcwUzXHcjGKqaspFGaBLoxK2dYW64rFAFG6zdHC?= =?utf-8?q?efbJhN0rAgJ2BP+63/PllJKeSNLrVaoTQ+KPcUrmL+8Mpo1MfnJ9CUkoJiOZYjHGb?= =?utf-8?q?R+IDifcekTMik7ofMyVCJr/BzmYU75M3MKSiBj2WyV7npkDKLsdtvwVo/tGRVQiEs?= =?utf-8?q?lMVI3/gY9iSMMuG/YIx1pIBunbqNJK+UQM+71p0j8+D7MZcFXsHfzqfB4uQdZQqM4?= =?utf-8?q?HJMghQpYXnPAetnaRLqkXlP07sSyd6XSUa3dq08Ba5O05XI4ys+ohwtjkQ8pisTSr?= =?utf-8?q?FptCTqf4TCcRMMRx5dwl0PfROOJC3MKeKJcoJkb250XWrrrOzHpe6SbajaA3ugZQk?= =?utf-8?q?4vxeouLv5Wnbaasgi1yzuTTuM03odVQwmSawL7TCrKedBmdaoNsYpiMoTKcPBZ/jr?= =?utf-8?q?0Lu2+b/oE/aOWDuQ7pl2lFK4/FGuW7QR20u6rH8gIG1m07PYKNyHfa+owC+NMYrXJ?= =?utf-8?q?D2n2TCVXLmLjUcD2yqTV85rqxWO1eWln41w=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB4451.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?mS+mpanamXV/SE+1dgjXXLAoNzx4?= =?utf-8?q?OFqrDDL5ClTDQ8aJ7M5UzyO9wBFTTDZMgPz43B30DQVq6ysp/NukDi/1oi+NkG/1T?= =?utf-8?q?Y7P4A+yzeNQNpelTUozxof5l+h2+yWMIrs9CWi4UhZMyzPE5whEQICVHByv5BeqOG?= =?utf-8?q?BuFzm/LaZSk9kv8qIfZobQ71zi6QId/eKJ9F/sVr0Xs4LE7F4CuuRZJk+XvEd1kC1?= =?utf-8?q?xCyLKNk2JJ1wgWBEImJ0BdGU42LiXpte7uoyGm/wPcVLHhh3vMdSHchVFiRLj+erJ?= =?utf-8?q?icDMO4loWFcwS/KbuWr99gQFhoFSRy7cr4ZXUbP4d7+Qj4ImC01e5BjT6jsKxGpEO?= =?utf-8?q?Qpq2VcZMEsuwSjlb2wzYrnbKnI5+wTcOZGoXYCooNILAXC90VrYxUavyXyjOGHO3Y?= =?utf-8?q?9yZ/8mr423G91FWdtiTtzpNBrR+P9dZg2Omm6dSVtxEuxn0zXxZHGMTOvGx0z7Nbw?= =?utf-8?q?rf7Dmor1jN/AN8GtScqaMkdkD+yhVKqw3rzC98iM6NoULNoS74RCefHQJ2DoZdYxj?= =?utf-8?q?HM8elvA3JrYy/5YZmlOEpMAJDMLysbMu1dN737zvpjZKo3BNw5pppdmqzWY0R0lo3?= =?utf-8?q?3Ilxf6IOEVYgTEZiSpI1V9cajDZCiZdeU6L5ItEqNKjPJUlQsH07AtBcC+a2eGNL7?= =?utf-8?q?vhCBu0uQw2CP9hqJk08bgi7C66XUZqTgPo9y434TeqK7+TXVRq0Rqyr7gwRVPybtH?= =?utf-8?q?9RX2L/hL7VIdOnCnVe+Ki3095pUPMupM3OZzaDqm4XkUe8riQurcR284khu9jcS7H?= =?utf-8?q?ivex/Yw1GAFugaWup0n/+E7WY5cMHhKOqZGzn1S6COicVH0VGAyRE+VLPHsUBgcDF?= =?utf-8?q?1XzMG4CACzz5tdd+y6K3V8fc16cXTIkPc75nrN3li0lAW9q4/mRjNV57XeioYrLqg?= =?utf-8?q?cVoKei05a2t9x8O637OHwcmDk9U/Dc4xHaPSZi8GTy2WRXDi1kzx3lZFPr8gnteKY?= =?utf-8?q?wQ7NrHUHIjhtGVzM5gLmWVL2JHf/pWfaoRhiIAQT/y7PlqrhPffiap3nqMdxe6g7l?= =?utf-8?q?KfZp4Js7XDrAPY7MzIR1N+1Fd/PE5ba63k7lQTawcb+M+IqH7/7EjlDVc4hGMZTWf?= =?utf-8?q?zT9PRp6OJbESrRthhJJAYC/XUsTUNbXRzaKkuOpExmdiy9PUidrBTjcIT1Bhn7W/e?= =?utf-8?q?0btqOTMwoeT2IPWi1m5//FHsUxYbkofWhd7jeh4fwv36TNs2nrlxNNAySSja+LtrJ?= =?utf-8?q?AY0z1k3Yir5xPChLhyND6w7AKNeq4K+G20X0Da1EW3Og9w0FmBY60HV4te3Fohe0+?= =?utf-8?q?I0vEavo7MyV7ZQUxXXXCMOgUEQ4S/1Ce9W5Vy3GdUs2oF0nMEFN93xerN56DAolhg?= =?utf-8?q?VwqPIsXxWMkyMe8TG0g0Bw7v8x4o6l9+NQ2M+8Wer9uDLtILm40uEtwWv/1vT7t7F?= =?utf-8?q?j0CGJnpsgPqoKXlqcPPeQJwT6TOOCuB+2L2RwaOVeX8nqdO/bH+UdrSGFTlQucKsU?= =?utf-8?q?CYLv24Y0DfrCmJQ//0j1fgmd/iI/IGvlyfbp9WE5a5dKMpGe9+4mvJaNY88uPg4hk?= =?utf-8?q?OVSo1kFwuCEMBZTA6E/d2M7NFUPjU7twRw=3D=3D?= X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-Network-Message-Id: abbb8085-7c7b-48fc-ca14-08dcba359a7a X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4451.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2024 18:44:16.9017 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DRS58NTS9tQ36j0XRIcIUlksS2qMeTVayNcLDuPtzDVbKplBwUdOhDoJdrvJOEfBr4HRyM/vT3de9Nd85SwidA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR18MB6216 X-Proofpoint-ORIG-GUID: AYzupHE5RPhGqYUWgW2WE9Lm4Q6S-3th X-Proofpoint-GUID: AYzupHE5RPhGqYUWgW2WE9Lm4Q6S-3th X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-08-11_17,2024-08-07_01,2024-05-17_01 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean current env_set_default_vars() doesn't delete var that are not in the imported env. hashtable removes vars that are not in the imported env but present in the current env only if H_NOCLEAR flag is not set. This change is to avoid passing H_NOCLEAR flag if specific vars are passed to env_set_default_vars() Without this change: Marvell>> env default boot_mode Marvell>> With the change: Marvell>> env default boot_mode WARNING: 'boot_mode' not in imported env, deleting it! Signed-off-by: Ravi Minnikanti Reviewed-by: Simon Glass --- Changes in v2: - Added env ut to test the scenario - Updated doc usage/cmd/env.rst => ut env Running 5 environment tests Test: env_test_attrs_lookup: attr.c Test: env_test_attrs_lookup_regex: attr.c Test: env_test_env_cmd: cmd_ut_env.c Test: env_test_htab_deletes: hashtable.c Test: env_test_htab_fill: hashtable.c Failures: 0 Changes in v3: - Fixed review comments - Ran checkpatch.pl and fixed trailing whitespaces. - Used UT_TESTF_CONSOLE_REC flag instead of console_record_reset_enable() - Removed unnecessary ut_assert_nextline_empty() check --- doc/usage/cmd/env.rst | 4 +++- env/common.c | 10 +++++++++- test/env/cmd_ut_env.c | 27 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/doc/usage/cmd/env.rst b/doc/usage/cmd/env.rst index 9629f97ffc..b65d85b668 100644 --- a/doc/usage/cmd/env.rst +++ b/doc/usage/cmd/env.rst @@ -79,7 +79,8 @@ The *env default* command resets the selected variables in the U-Boot environment to their default values. var - list of variable name. + list of variable names. If variable is not part of default + environment, it is deleted with a warning message on console. \-a all U-Boot environment. \-f @@ -309,6 +310,7 @@ Delete environment variable in memory:: Reset environment variable to default value, in memory:: => env default bootcmd + => env default ipaddr serverip => env default -a Save current environment in persistent storage:: diff --git a/env/common.c b/env/common.c index 8d47d72605..6cba7f1c18 100644 --- a/env/common.c +++ b/env/common.c @@ -401,7 +401,15 @@ int env_set_default_vars(int nvars, char * const vars[], int flags) * Special use-case: import from default environment * (and use \0 as a separator) */ - flags |= H_NOCLEAR | H_DEFAULT; + + /* + * When vars are passed remove variables that are not in + * the default environment. + */ + if (!nvars) + flags |= H_NOCLEAR; + + flags |= H_DEFAULT; return himport_r(&env_htab, default_environment, sizeof(default_environment), '\0', flags, 0, nvars, vars); diff --git a/test/env/cmd_ut_env.c b/test/env/cmd_ut_env.c index 13e0998341..238cf31036 100644 --- a/test/env/cmd_ut_env.c +++ b/test/env/cmd_ut_env.c @@ -9,6 +9,33 @@ #include #include +static int env_test_env_cmd(struct unit_test_state *uts) +{ + ut_assertok(run_command("setenv non_default_var1 1", 0)); + ut_assert_console_end(); + + ut_assertok(run_command("setenv non_default_var2 1", 0)); + ut_assert_console_end(); + + ut_assertok(run_command("env print non_default_var1", 0)); + ut_assert_nextline("non_default_var1=1"); + ut_assert_console_end(); + + ut_assertok(run_command("env default non_default_var1 non_default_var2", 0)); + ut_assert_nextline("WARNING: 'non_default_var1' not in imported env, deleting it!"); + ut_assert_nextline("WARNING: 'non_default_var2' not in imported env, deleting it!"); + ut_assert_console_end(); + + ut_asserteq(1, run_command("env exists non_default_var1", 0)); + ut_assert_console_end(); + + ut_asserteq(1, run_command("env exists non_default_var2", 0)); + ut_assert_console_end(); + + return 0; +} +ENV_TEST(env_test_env_cmd, UT_TESTF_CONSOLE_REC); + int do_ut_env(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { struct unit_test *tests = UNIT_TEST_SUITE_START(env_test);