[PATCH v2 3/3] environment: allow board code to suppress external env loading
Marco Felsch
m.felsch at pengutronix.de
Fri Dec 12 01:24:21 PST 2025
Hi Ahmad,
On 25-12-11, Ahmad Fatoum wrote:
> 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.
out of curiosity, why can't we use the security profile handling for
this as well? Why is the ext. env handling so special compared to the
other use-cases which make use of the security profiles?
Regards,
Marco
>
> Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
> ---
> 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
>
>
>
--
#gernperDu
#CallMeByMyFirstName
Pengutronix e.K. | |
Steuerwalder Str. 21 | https://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
More information about the barebox
mailing list