kmodloader: fix memleak adding to avl tree
authorTony Ambardar <itugrok@yahoo.com>
Wed, 24 Jan 2024 08:17:06 +0000 (00:17 -0800)
committerTony Ambardar <itugrok@yahoo.com>
Sat, 2 Mar 2024 21:56:56 +0000 (13:56 -0800)
Check avl_insert() return value and free node data on error, otherwise this
is observed to directly leak memory.

Fixes: 6e3c6dcf922e ("kmodloader: add module alias awareness")
Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
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;
 }