From patchwork Wed Feb 12 18:44:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Delaunay X-Patchwork-Id: 236290 List-Id: U-Boot discussion From: patrick.delaunay at st.com (Patrick Delaunay) Date: Wed, 12 Feb 2020 19:44:54 +0100 Subject: [RESEND PATCH 03/10] env: correctly handle result in env_init In-Reply-To: <20200212184501.5911-1-patrick.delaunay@st.com> References: <20200212184501.5911-1-patrick.delaunay@st.com> Message-ID: <20200212184501.5911-4-patrick.delaunay@st.com> Don't return error with ret=-ENOENT when the optional ops drv->init is absent but only if env_driver_lookup don't found driver. This patch correct an issue for the code if (!env_init()) env_load() When only ext4 is supported (CONFIG_ENV_IS_IN_EXT4), as the backend env/ext4.c doesn't define an ops .init Signed-off-by: Patrick Delaunay --- env/env.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/env/env.c b/env/env.c index 9237bb9c74..e4df1715e4 100644 --- a/env/env.c +++ b/env/env.c @@ -292,7 +292,10 @@ int env_init(void) int prio; for (prio = 0; (drv = env_driver_lookup(ENVOP_INIT, prio)); prio++) { - if (!drv->init || !(ret = drv->init())) + ret = 0; + if (drv->init) + ret = drv->init(); + if (!ret) env_set_inited(drv->location); debug("%s: Environment %s init done (ret=%d)\n", __func__,