kmodloader: fix memleak adding to avl tree
[project/ubox.git] / kmodloader.c
index 01fa8f6f3368a9eae779fca4d3aea9cd10c3ecb3..b705c0cb76220b0bf3e38e7a1c1199a68edc4b53 100644 (file)
@@ -282,8 +282,10 @@ alloc_module_node(const char *name, struct module *m, bool is_alias)
                mn->avl.key = strcpy(_name, name);
                mn->m = m;
                mn->is_alias = is_alias;
-               avl_insert(&modules, &mn->avl);
-               m->refcnt += 1;
+               if (avl_insert(&modules, &mn->avl) == 0)
+                       m->refcnt += 1;
+               else
+                       free(mn);
        }
        return mn;
 }