Failure to load one defaultenv has no bearing on whether subsequent defaultenv loads would succeed, so do not abort the loop early in that case.
Reported-by: Jan Lübbe <[email protected]> Signed-off-by: Ahmad Fatoum <[email protected]> --- v1 -> v2: - no change --- common/startup.c | 8 ++++++-- defaultenv/defaultenv.c | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/common/startup.c b/common/startup.c index dfea8394fdee..8f5e77d4619c 100644 --- a/common/startup.c +++ b/common/startup.c @@ -92,8 +92,12 @@ static int load_environment(void) default_environment_path = default_environment_path_get(); - if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT)) - defaultenv_load("/env", 0); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT)) { + ret = defaultenv_load("/env", 0); + if (ret) + pr_warn("Failed loading (some) defaultenv overlays: %pe\n", + ERR_PTR(ret)); + } if (IS_ENABLED(CONFIG_ENV_HANDLING)) { envfs_load(default_environment_path, "/env", 0); diff --git a/defaultenv/defaultenv.c b/defaultenv/defaultenv.c index d6cca466a683..99f681f6520e 100644 --- a/defaultenv/defaultenv.c +++ b/defaultenv/defaultenv.c @@ -172,17 +172,17 @@ static int defaultenv_load_one(struct defaultenv *df, const char *dir, int defaultenv_load(const char *dir, unsigned flags) { struct defaultenv *df; - int ret; + int err = 0; defaultenv_add_base(); defaultenv_add_external(); list_for_each_entry(df, &defaultenv_list, list) { - ret = defaultenv_load_one(df, dir, flags); + int ret = defaultenv_load_one(df, dir, flags); if (ret) - return ret; + err = ret; } - return 0; + return err; } -- 2.47.3
