]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
env: Complete generic support for writable list
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 3 Feb 2023 12:22:51 +0000 (13:22 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 10 Feb 2023 16:24:08 +0000 (11:24 -0500)
This completes what 890feecaab72 started by selecting ENV_APPEND and
loading the default env before any other sources. This ensures that load
operations pick up all non-writable vars from the default env and only
permitted parts from other locations according to the regular
priorities.

With this change, boards only need to define the list of writable
variables but no longer have to provide a custom env_get_location
implementation.

CC: Joe Hershberger <joe.hershberger@ni.com>
CC: Marek Vasut <marex@denx.de>
CC: Stefan Herbrechtsmeier <stefan.herbrechtsmeier-oss@weidmueller.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Marek Vasut <marex@denx.de>
env/Kconfig
env/env.c

index c409ea71fe51f9ab66289f92360cbf4e755abed8..6e24eee55f24d0d45917c4c557725e50e13806e7 100644 (file)
@@ -733,6 +733,7 @@ config ENV_APPEND
 
 config ENV_WRITEABLE_LIST
        bool "Permit write access only to listed variables"
+       select ENV_APPEND
        help
          If defined, only environment variables which explicitly set the 'w'
          writeable flag can be written and modified at runtime. No variables
index 0f73ebc08e0e615c29fcbe5e440c55f215b997fe..ad774f41175babe834e642a975936709fd44214a 100644 (file)
--- a/env/env.c
+++ b/env/env.c
@@ -192,6 +192,14 @@ int env_load(void)
        int best_prio = -1;
        int prio;
 
+       if (CONFIG_IS_ENABLED(ENV_WRITEABLE_LIST)) {
+               /*
+                * When using a list of writeable variables, the baseline comes
+                * from the built-in default env. So load this first.
+                */
+               env_set_default(NULL, 0);
+       }
+
        for (prio = 0; (drv = env_driver_lookup(ENVOP_LOAD, prio)); prio++) {
                int ret;