lowmem: fix memleak on error 66/220266/3
authorAdrian Szyndela <adrian.s@samsung.com>
Mon, 16 Dec 2019 16:16:49 +0000 (17:16 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Tue, 17 Dec 2019 11:50:55 +0000 (12:50 +0100)
Change-Id: I10a70086f0302335c9023b4892388b2b3209674c

src/memory/lowmem-limit.c

index 35e8dd7..a289659 100644 (file)
@@ -178,9 +178,15 @@ static void memlimit_finish_cb(void *data, int ret)
 {
        struct memory_limit_log *mlog = (struct memory_limit_log *)data;
 
-       if (!mlog || !mlog->cgdir)
+       if (!mlog)
                return;
 
+       if (!mlog->cgdir) {
+               free(mlog->appname);
+               free(mlog);
+               return;
+       }
+
        /*
         * send sigabt signal
         * If debug is enabled, it makes crash popup with log files.
@@ -196,10 +202,8 @@ static void memlimit_finish_cb(void *data, int ret)
        else if (mem_limit == MEM_LIMIT_OOM)
                cgroup_write_node_uint32(mlog->cgdir, MEMCG_OOM_CONTROL_PATH, 0);
 
-       if (mlog->appname)
-               free(mlog->appname);
-       if (mlog->cgdir)
-               free(mlog->cgdir);
+       free(mlog->appname);
+       free(mlog->cgdir);
        free(mlog);
 }
 
@@ -356,8 +360,7 @@ static bool lowmem_limit_cb(int fd, void *data)
 
 remove_mle:
        g_hash_table_remove(memory_limit_hash, cg_dir);
-       if (mlog)
-               free(mlog);
+       free(mlog);
        return false;
 }