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 <patrick.delau...@st.com>
---

 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__,
-- 
2.17.1

Reply via email to