* [PATCH 0/3] environment: Allow autoprobing env devices without CONFIG_INSECURE
@ 2026-04-28 9:24 Sascha Hauer
2026-04-28 9:24 ` [PATCH 1/3] environment: Drop /dev/env0 default Sascha Hauer
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Sascha Hauer @ 2026-04-28 9:24 UTC (permalink / raw)
To: BAREBOX
Autoprobing environment devices vie barebox environment GUID currently
only works with CONFIG_INSECURE enabled. Add an explicit Kconfig option
for it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
Sascha Hauer (3):
environment: Drop /dev/env0 default
environment: add global.env.path
environment: add explicit option to allow searching for environment devices
common/Kconfig | 14 ++++++++++++++
common/environment.c | 10 ++++++----
2 files changed, 20 insertions(+), 4 deletions(-)
---
base-commit: 019d102038a64e6b6e8f445cbfd2d15e68d0ec3f
change-id: 20260428-env-autoprobe-621b9d14ab98
Best regards,
--
Sascha Hauer <s.hauer@pengutronix.de>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] environment: Drop /dev/env0 default
2026-04-28 9:24 [PATCH 0/3] environment: Allow autoprobing env devices without CONFIG_INSECURE Sascha Hauer
@ 2026-04-28 9:24 ` Sascha Hauer
2026-04-28 9:24 ` [PATCH 2/3] environment: add global.env.path Sascha Hauer
2026-04-28 9:24 ` [PATCH 3/3] environment: add explicit option to allow searching for environment devices Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2026-04-28 9:24 UTC (permalink / raw)
To: BAREBOX
Since [1] all boards that want to use /dev/env0 as environment path do so
explicitly, so we can drop the default fallback to /dev/env0.
[1] c31204804b ("environment: explicitly set env path to /dev/env0 where used")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
common/environment.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/common/environment.c b/common/environment.c
index ec14d0629a..207b58e743 100644
--- a/common/environment.c
+++ b/common/environment.c
@@ -132,8 +132,6 @@ const char *default_environment_path_get(void)
cdev = default_environment_path_search();
if (cdev)
default_environment_path = basprintf("/dev/%s", cdev->name);
- else
- default_environment_path = xstrdup("/dev/env0");
return default_environment_path;
}
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/3] environment: add global.env.path
2026-04-28 9:24 [PATCH 0/3] environment: Allow autoprobing env devices without CONFIG_INSECURE Sascha Hauer
2026-04-28 9:24 ` [PATCH 1/3] environment: Drop /dev/env0 default Sascha Hauer
@ 2026-04-28 9:24 ` Sascha Hauer
2026-04-28 9:24 ` [PATCH 3/3] environment: add explicit option to allow searching for environment devices Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2026-04-28 9:24 UTC (permalink / raw)
To: BAREBOX
barebox doesn't give an indication where the environment is stored without
actually doing a loadenv/saveenv. Add global.env.path which can be used to
show the path or even to set it.
A variable added with globalvar_add_simple_string() will be set to an empty
string whereas default_environment_path_get() used to return NULL when unset,
so we have to catch this explicitly.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
common/environment.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/common/environment.c b/common/environment.c
index 207b58e743..f883a520c6 100644
--- a/common/environment.c
+++ b/common/environment.c
@@ -126,7 +126,7 @@ const char *default_environment_path_get(void)
{
struct cdev *cdev;
- if (default_environment_path)
+ if (default_environment_path && *default_environment_path)
return default_environment_path;
cdev = default_environment_path_search();
@@ -547,9 +547,13 @@ int envfs_load(const char *filename, const char *dir, unsigned flags)
static int register_env_vars(void)
{
globalvar_add_simple_bool("env.autoprobe", &global_env_autoprobe);
+ globalvar_add_simple_string("env.path", &default_environment_path);
+
return 0;
}
postcore_initcall(register_env_vars);
BAREBOX_MAGICVAR(global.env.autoprobe,
"Automatically probe known block devices for environment");
+BAREBOX_MAGICVAR(global.env.path,
+ "The path the environment is stored");
#endif
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 3/3] environment: add explicit option to allow searching for environment devices
2026-04-28 9:24 [PATCH 0/3] environment: Allow autoprobing env devices without CONFIG_INSECURE Sascha Hauer
2026-04-28 9:24 ` [PATCH 1/3] environment: Drop /dev/env0 default Sascha Hauer
2026-04-28 9:24 ` [PATCH 2/3] environment: add global.env.path Sascha Hauer
@ 2026-04-28 9:24 ` Sascha Hauer
2 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2026-04-28 9:24 UTC (permalink / raw)
To: BAREBOX
Add an explicit Kconfig option to allow searching the environment storage path
based on the barebox environment partition GUID.
So far this depended on CONFIG_INSECURE being set. First of all loading the
barebox environment from storage is always insecure as the barebox environment
doesn't have any security measures. The difference that comes with loading
the environment from an explicitly specified storage device and autoprobing
it from the available block devices is that with the former an attacker would
need access to the internal storage whereas with the latter barebox could
be tricked into loading an environment from an external SD card.
Whether or not this is acceptable depends on the case, so ask the user for it.
Real security can only be provided by not loading an environment from storage
at all, but that can be controlled at compile time by disabling CONFIG_ENV_HANDLING
or at runtime by security policies.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
common/Kconfig | 14 ++++++++++++++
common/environment.c | 2 +-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/common/Kconfig b/common/Kconfig
index fd422714d5..f74f06b4ad 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -987,6 +987,20 @@ config ENV_HANDLING
A safe use of the mutable environment may be possible if board code only
mounts it after verifying a JSON Web Token that enables a debug mode.
+config ENV_HANDLING_AUTOPROBE
+ depends on ENV_HANDLING
+ bool "Autoprobe for environment devices"
+ default y
+ help
+ There are two ways for specifying where the barebox environment is. The first one
+ specifies the path explicitly in the device tree or board code. The other one is
+ to automatically search it on block devices which is enabled with this option.
+ Here a partition with the barebox environment GUID is searched. If this option
+ is enabled and no environment is chosen by device tree or board code then a block
+ device containing a partition with the barebox environment GUID is used for the
+ environment. A block device barebox has booted from is preferred over other block
+ devices.
+
config DEFAULT_ENVIRONMENT
select CRC32
bool
diff --git a/common/environment.c b/common/environment.c
index f883a520c6..a3281feca2 100644
--- a/common/environment.c
+++ b/common/environment.c
@@ -53,7 +53,7 @@ struct action_data {
#define TMPDIR "/.defaultenv"
-static int global_env_autoprobe = IS_ENABLED(CONFIG_INSECURE);
+static int global_env_autoprobe = IS_ENABLED(CONFIG_ENV_HANDLING_AUTOPROBE);
static char *default_environment_path;
void default_environment_path_set(const char *path)
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-28 9:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-04-28 9:24 [PATCH 0/3] environment: Allow autoprobing env devices without CONFIG_INSECURE Sascha Hauer
2026-04-28 9:24 ` [PATCH 1/3] environment: Drop /dev/env0 default Sascha Hauer
2026-04-28 9:24 ` [PATCH 2/3] environment: add global.env.path Sascha Hauer
2026-04-28 9:24 ` [PATCH 3/3] environment: add explicit option to allow searching for environment devices Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox