pass: rescon: Fix overridable property 95/269395/2
authorDongwoo Lee <dwoo08.lee@samsung.com>
Thu, 13 Jan 2022 11:57:04 +0000 (20:57 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 24 Jan 2022 06:48:13 +0000 (15:48 +0900)
To prevent updating not overridable resources, adds more checks for
overridable, and also set overridable as true by default.

Change-Id: I06802347ca210653dce0e04d78e4cde55df6937f
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
src/pass/pass-parser.c
src/pass/pass-rescon.c

index 1dacf07..837643b 100644 (file)
@@ -873,6 +873,8 @@ static int parse_resource(struct pass *pass, json_object *obj)
 
                cur->init_data.memory.fault_around_bytes = -1;
 
+               cur->overridable = 1;
+
                ret = parse_resource_data(pass, i, resource_obj);
                if (ret < 0) {
                        _E("cannot parse of %dth resource in 'device_list' section\n", i);
index cdead23..cf74d3f 100644 (file)
@@ -149,6 +149,9 @@ static int rescon_update(struct pass_resource *res)
        int ret, i;
        int failed = 0;
 
+       if (!res->overridable)
+               return 0;
+
        /*
         * Multiple PASS modules can require the change of h/w resource by
         * using pass_level at the same time. It means RESCON (Resource
@@ -346,14 +349,8 @@ static void rescon_set_scenario_level(struct pass_resource *res,
 {
        struct pass_rescon *rescon = &res->rescon;
 
-       if (scenario_level < 0)
-               return;
-
-       if (!res->overridable) {
-               _I("Scenario level of the resource %s is locked",
-                                       res->config_data.res_name);
+       if (scenario_level < 0 || !res->overridable)
                return;
-       }
 
        g_mutex_lock(&rescon->scenario_level_mutex);
        rescon->scenario_level_list = g_list_append(rescon->scenario_level_list,
@@ -367,7 +364,7 @@ static void rescon_unset_scenario_level(struct pass_resource *res,
 {
        struct pass_rescon *rescon = &res->rescon;
 
-       if (scenario_level < 0)
+       if (scenario_level < 0 || !res->overridable)
                return;
 
        g_mutex_lock(&rescon->scenario_level_mutex);