We do not need to have an extra code path when the variable already
exists, instead setting an existing variable can be done in the
variable creation code path aswell.

Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 common/globalvar.c | 25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/common/globalvar.c b/common/globalvar.c
index 007e955..8f37c99 100644
--- a/common/globalvar.c
+++ b/common/globalvar.c
@@ -231,7 +231,7 @@ static int nv_param_set(struct device_d *dev, struct 
param_d *p, const char *val
 
 static int __nvvar_add(const char *name, const char *value)
 {
-       struct param_d *p, *gp;
+       struct param_d *p;
        int ret;
        int devspace;
        struct device_d *dev;
@@ -246,19 +246,12 @@ static int __nvvar_add(const char *name, const char 
*value)
 
        devspace = ret;
 
-       gp = get_param_by_name(&nv_device, name);
-       if (gp) {
-               if (!devspace) {
-                       ret = dev_set_param(&global_device, name, value);
-                       if (ret)
-                               return ret;
-               }
-
-               ret = dev_set_param(&nv_device, name, value);
-               if (ret)
-                       return ret;
-
-               return 0;
+       /* Get param. If it doesn't exist yet, create it */
+       p = get_param_by_name(&nv_device, name);
+       if (!p) {
+               p = dev_add_param(&nv_device, name, nv_param_set, nv_param_get, 
0);
+               if (IS_ERR(p))
+                       return PTR_ERR(p);
        }
 
        if (!devspace) {
@@ -267,10 +260,6 @@ static int __nvvar_add(const char *name, const char *value)
                        return ret;
        }
 
-       p = dev_add_param(&nv_device, name, nv_param_set, nv_param_get, 0);
-       if (IS_ERR(p))
-               return PTR_ERR(p);
-
        if (!value) {
                if (devspace) {
                        if (dev)
-- 
2.8.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to