memory-cgroup: Check null memory info in memcg_write_optimizer_params() 83/320483/1
authorUnsung <unsung.lee@samsung.com>
Thu, 10 Oct 2024 08:47:07 +0000 (17:47 +0900)
committerUnsung Lee <unsung.lee@samsung.com>
Sat, 16 Nov 2024 04:12:20 +0000 (13:12 +0900)
Check null memory info in memcg_write_optimizer_params() to avoid SIGABORT.
This is because memory info structure is directly accessed without checking the validity.
If memory cgroup is null then memcg_write_optimizer_params() returns error to notify that
memory cgroup could not be initalized successfully.

Change-Id: I3e35eacdcf00dc96876cbce7694d35f404df05a6
Signed-off-by: Unsung Lee <unsung.lee@samsung.com>
src/common/cgroup/memory-cgroup.c
src/resource-optimizer/memory/swap/swap.c

index abb90b5c3059bf0c2455d832b4d2c36d356012f0..fbabde5f800c9c6b08b2d47a4dbecc6c929f352a 100644 (file)
@@ -455,6 +455,10 @@ int memcg_write_limiter_params(void)
 int memcg_write_optimizer_params(enum cgroup_type cgroup_type)
 {
        struct memcg_info *mi = get_memcg_info(cgroup_type);
+       if (mi == NULL) {
+               _E("Failed to get memcg info");
+               return RESOURCED_ERROR_FAIL;
+       }
        memcg_write_optimizer_info(mi);
 
        return RESOURCED_ERROR_NONE;
index 3c5ee30d487f4b4c91de71a7cbec524df0ba304c..cbb7fd7263f071266dcf14d45c85a920e550daee 100644 (file)
@@ -901,7 +901,12 @@ static int swap_parse_config_file(void)
                        swap_conf->swappiness[MEMCG_BACKGROUND_LRU] <= 100) {
                memcg_info_set_swappiness(get_memcg_info(MEMCG_BACKGROUND_LRU),
                                swap_conf->swappiness[MEMCG_BACKGROUND_LRU]);
-               memcg_write_optimizer_params(MEMCG_BACKGROUND_LRU);
+               r = memcg_write_optimizer_params(MEMCG_BACKGROUND_LRU);
+               if (r != RESOURCED_ERROR_NONE) {
+                       arg_swap_enable = false;
+                       goto free_swap_conf;
+               }
+
                _I("[SWAP] cgroup (%s) swapiness = %d", MEMCG_BACKGROUND_LRU_NAME,
                                get_memcg_info(MEMCG_BACKGROUND_LRU)->swappiness);
        }