[PATCH v3 3/3] environment: allow board code to suppress external env loading
Ahmad Fatoum
a.fatoum at pengutronix.de
Fri Dec 12 08:22:09 PST 2025
It can be useful for board code to deny loading an environment without
disabling it altogether, e.g. to disable load of the environment when
entering a recovery mode. Add a function for that.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
v2 -> v3:
- no change
v1 -> v2:
- change from globalvar to C function
---
common/startup.c | 14 ++++++++++++--
include/envfs.h | 5 +++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/common/startup.c b/common/startup.c
index b6f8a49bb94b..73cf4a495b9c 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -85,6 +85,15 @@ static int mount_root(void)
fs_initcall(mount_root);
#endif
+static bool may_autoload_external_env = IS_ENABLED(CONFIG_ENV_HANDLING);
+
+#ifdef CONFIG_ENV_HANDLING
+void autoload_external_env(bool endis)
+{
+ may_autoload_external_env = endis;
+}
+#endif
+
static int load_environment(void)
{
const char *default_environment_path;
@@ -99,10 +108,11 @@ static int load_environment(void)
ERR_PTR(ret));
}
- if (IS_ENABLED(CONFIG_ENV_HANDLING))
+ if (may_autoload_external_env)
envfs_load(default_environment_path, "/env", 0);
else if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT))
- pr_info("external environment support disabled. Using default environment\n");
+ pr_info("external environment support %s. Using default environment\n",
+ IS_ENABLED(CONFIG_ENV_HANDLING) ? "disallowed" : "disabled");
nvvar_load();
diff --git a/include/envfs.h b/include/envfs.h
index e21f2b52368a..0c6b2e681515 100644
--- a/include/envfs.h
+++ b/include/envfs.h
@@ -105,6 +105,7 @@ int envfs_load_from_buf(void *buf, int len, const char *dir, unsigned flags);
#ifdef CONFIG_ENV_HANDLING
void default_environment_path_set(const char *path);
const char *default_environment_path_get(void);
+void autoload_external_env(bool endis);
#else
static inline void default_environment_path_set(const char *path)
{
@@ -114,6 +115,10 @@ static inline const char *default_environment_path_get(void)
{
return NULL;
}
+
+static inline void autoload_external_env(bool endis)
+{
+}
#endif
#ifdef CONFIG_OF_BAREBOX_DRIVERS
--
2.47.3
More information about the barebox
mailing list