From: Kichan Kwon Date: Tue, 20 Dec 2016 06:35:17 +0000 (+0900) Subject: Check memory allocation failure X-Git-Tag: accepted/tizen/3.0/common/20161223.110548~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F34%2F106034%2F2;p=platform%2Fcore%2Fsystem%2Fresourced.git Check memory allocation failure - In addition, repeated error code is removed Change-Id: I34a21445a5cffe07c1a44c83b457c47b614f9de0 Signed-off-by: Kichan Kwon --- diff --git a/include/resourced.h b/include/resourced.h index 4377a91..ecf8e0e 100644 --- a/include/resourced.h +++ b/include/resourced.h @@ -45,7 +45,6 @@ extern "C" { * @brief return code of the rsml's function */ typedef enum { - RESOURCED_ERROR_OOM = -10, /**< Out of memory error, allocation failed */ RESOURCED_ERROR_NONMONITOR = -9, /** < Process don't show watchdog popup */ RESOURCED_ERROR_NONFREEZABLE = -8, /** < Process is nonfrizable */ RESOURCED_ERROR_NOTIMPL = -7, /**< Not implemented yet error */ @@ -53,7 +52,7 @@ typedef enum { mounted or daemon not started */ RESOURCED_ERROR_NO_DATA = -5, /**< Success, but no data */ RESOURCED_ERROR_INVALID_PARAMETER = -4,/**< Invalid parameter */ - RESOURCED_ERROR_OUT_OF_MEMORY = -3, /**< DEPRECATED: Out of memory */ + RESOURCED_ERROR_OUT_OF_MEMORY = -3, /**< Out of memory error, allocation failed */ RESOURCED_ERROR_DB_FAILED = -2, /**< Database error */ RESOURCED_ERROR_FAIL = -1, /**< General error */ RESOURCED_ERROR_NONE = 0 /**< General success */ diff --git a/src/common/userinfo-list.c b/src/common/userinfo-list.c index 125fe97..129854d 100644 --- a/src/common/userinfo-list.c +++ b/src/common/userinfo-list.c @@ -63,8 +63,10 @@ static resourced_ret_c userinfo_update_list(void) /* Get user data by using libgum */ gus = gum_user_service_create_sync(TRUE); - if (!gus) + if (!gus) { + _E("Failed to create gum user service"); return RESOURCED_ERROR_FAIL; + } query = g_strsplit("admin,normal", ",", -1); @@ -72,6 +74,7 @@ static resourced_ret_c userinfo_update_list(void) g_strfreev(query); if (!users) { + _E("Failed to get gum user list"); g_object_unref(gus); return RESOURCED_ERROR_FAIL; } @@ -81,8 +84,7 @@ static resourced_ret_c userinfo_update_list(void) /* Make new user list */ user_list = g_array_new(FALSE, FALSE, sizeof(struct user_info*)); - if (!user_list) - return RESOURCED_ERROR_OUT_OF_MEMORY; + assert(user_list); iter = users; for (; iter != NULL; iter = g_list_next(iter)) { @@ -91,6 +93,8 @@ static resourced_ret_c userinfo_update_list(void) g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL); elem = malloc(sizeof(struct user_info)); + assert(elem); + elem->uid = uid; snprintf(elem->home_dir, PATH_MAX, "%s", home_dir); diff --git a/src/heart/heart-cpu.c b/src/heart/heart-cpu.c index 10a68a9..f17dea2 100644 --- a/src/heart/heart-cpu.c +++ b/src/heart/heart-cpu.c @@ -1494,6 +1494,8 @@ static int heart_cpu_init(void *data) cache->last_file_commit_time = logging_get_time(CLOCK_BOOTTIME); uid = malloc(sizeof(uid_t)); + assert(uid); + *uid = elem->uid; g_hash_table_insert(heart_cpu_app_list, (gpointer)uid, (gpointer)cache); } diff --git a/src/heart/logging.c b/src/heart/logging.c index 6a5a402..2652038 100644 --- a/src/heart/logging.c +++ b/src/heart/logging.c @@ -313,9 +313,16 @@ static int logging_update_user_db_list(char *name, enum logging_db_type type, GH } uid = malloc(sizeof(uid_t)); + assert(uid); + *uid = elem->uid; + db_elem = (struct logging_db*)malloc(sizeof(struct logging_db)); + assert(db_elem); + db_elem->path = strndup(path, strlen(path)); + assert(db_elem->path); + db_elem->file = file; db_elem->insert_stmt = NULL; db_elem->delete_stmt = NULL; @@ -341,10 +348,8 @@ int logging_module_init(char *name, enum logging_period max_period, if (!logging_instance) { logging_instance = (struct logging_object *)malloc(sizeof(struct logging_object)); - if (!logging_instance) { - _E("Failed to malloc logging_instance"); - return RESOURCED_ERROR_OUT_OF_MEMORY; - } + assert(logging_instance); + logging_instance->ref = 0; logging_init(NULL); } @@ -357,11 +362,7 @@ int logging_module_init(char *name, enum logging_period max_period, } module = calloc(1, sizeof(struct logging_module)); - - if (!module) { - _E("malloc failed"); - return RESOURCED_ERROR_OUT_OF_MEMORY; - } + assert(module); /* DB create */ switch (db_type) { @@ -1599,7 +1600,17 @@ int logging_init(void *data) return RESOURCED_ERROR_DB_FAILED; } db_elem = (struct logging_db*)malloc(sizeof(struct logging_db)); + if (!db_elem) { + _E("Out of memory!"); + return RESOURCED_ERROR_OUT_OF_MEMORY; + } + db_elem->path = strndup(SYSTEM_DEFAULT_DB_NAME, sizeof(SYSTEM_DEFAULT_DB_NAME)); + if (!(db_elem->path)) { + _E("Out of memory!"); + return RESOURCED_ERROR_OUT_OF_MEMORY; + } + db_elem->file = db_file; db_elem->insert_stmt = NULL; db_elem->delete_stmt = NULL; diff --git a/src/memory/vmpressure-lowmem-handler.c b/src/memory/vmpressure-lowmem-handler.c index 040d1ca..8e05379 100644 --- a/src/memory/vmpressure-lowmem-handler.c +++ b/src/memory/vmpressure-lowmem-handler.c @@ -1475,25 +1475,19 @@ static void setup_memcg_params(void) dynamic_threshold_min); } -static int init_memcg_params(void) +static void init_memcg_params(void) { int idx = 0; char buf[MAX_PATH_LENGTH]; memcg_tree = (struct memcg **)malloc(sizeof(struct memcg *) * MEMCG_MAX); - if (!memcg_tree) - return RESOURCED_ERROR_FAIL; + assert(memcg_tree); for (idx = 0; idx < MEMCG_MAX; idx++) { struct memcg_info *mi = NULL; memcg_tree[idx] = (struct memcg *)malloc(sizeof(struct memcg)); - if (!memcg_tree[idx]) { - int i; - for (i = 0; i < idx - 1; i++) - free(memcg_tree[i]); - free(memcg_tree); - return RESOURCED_ERROR_FAIL; - } + assert(memcg_tree[idx]); + memcg_init(memcg_tree[idx]); if (memcg_name[idx]) snprintf(buf, MAX_PATH_LENGTH, "%s/%s", LOWMEM_DEFAULT_CGROUP, @@ -1501,20 +1495,14 @@ static int init_memcg_params(void) else snprintf(buf, MAX_PATH_LENGTH, "%s", LOWMEM_DEFAULT_CGROUP); mi = (struct memcg_info *)malloc(sizeof(struct memcg_info)); - if (!mi) { - int i; - for (i = 0; i < idx; i++) - free(memcg_tree[i]); - free(memcg_tree); - return RESOURCED_ERROR_FAIL; - } + assert(mi); + memcg_info_init(mi, buf); memcg_tree[idx]->info = mi; _I("init memory cgroup for %s", buf); if (idx == MEMCG_MEMORY) memcg_root = memcg_tree[idx]->info; } - return RESOURCED_ERROR_NONE; } static int write_params_memcg_info(struct memcg_info *mi, diff --git a/src/proc-stat/proc-main.c b/src/proc-stat/proc-main.c index 8158ddd..7bce57f 100644 --- a/src/proc-stat/proc-main.c +++ b/src/proc-stat/proc-main.c @@ -297,7 +297,7 @@ static int proc_runtime_app_info_read_procs(const char *path, pid_list *child_li buf = calloc(1, PATH_MAX); if (!buf) - return RESOURCED_ERROR_OOM; + return RESOURCED_ERROR_OUT_OF_MEMORY; ret = fread_str(app_info_node, &buf); if (ret < 0) diff --git a/src/swap/swap.c b/src/swap/swap.c index e1bd210..9bb1f7d 100644 --- a/src/swap/swap.c +++ b/src/swap/swap.c @@ -571,7 +571,7 @@ static int swap_zram_activate(void) if (swap_size_bytes < swap_control.swap_size_bytes) { _E("swap size (%d) less than expected swap size (%d)", swap_size_bytes, swap_control.swap_size_bytes); - return RESOURCED_ERROR_OOM; + return RESOURCED_ERROR_OUT_OF_MEMORY; } ret = swap_mkswap();