proc: Fix handling already terminated process 60/168860/1
authorPaweł Szewczyk <p.szewczyk@samsung.com>
Mon, 22 Jan 2018 14:55:41 +0000 (15:55 +0100)
committerPaweł Szewczyk <p.szewczyk@samsung.com>
Wed, 31 Jan 2018 13:40:16 +0000 (14:40 +0100)
There is no reason to allocate app info if main pid was terminated.

Change-Id: I2cb2c2568bd0a284caf0973fc84aa6124470b168
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
src/proc-stat/proc-main.c

index 421ac3fd8ab147310ce9a84c4ef35f13f0786ce1..1a27b6b3aa7b5c0b92e37ebfbc8c2fe9e9df726b 100644 (file)
@@ -1153,19 +1153,16 @@ static int proc_restore_runtime_app_info(const char *path)
        if (ret < 0)
                return ret;
 
+       ret = proc_get_oom_score_adj(main_pid, &oom_score_adj);
+       if (ret < 0) {
+               _I("pid %d is already terminated.", main_pid);
+               return ret;
+       }
+
        pai = proc_create_app_info(appid, pkgname, main_pid, flags, categories, type, state);
        if (!pai)
                return -ENOMEM;
 
-       ret = proc_get_oom_score_adj(pai->main_pid, &oom_score_adj);
-       if (ret < 0) {
-               _I("pid %d is already terminated. remove it", pai->main_pid);
-               (void) proc_app_list_remove_app_info(pai);
-               resourced_appinfo_put(pai->ai);
-               free(pai);
-
-               return ret;
-       }
        pai->memory.oom_score_adj = oom_score_adj;
 
        ret = proc_runtime_app_info_read_runtime_exclude(path, &pai->runtime_exclude);