lib: resource-monitor: Fix missing mutual exclusion 58/307358/2
authorDongwoo Lee <dwoo08.lee@samsung.com>
Thu, 7 Mar 2024 06:41:29 +0000 (15:41 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Thu, 7 Mar 2024 10:59:40 +0000 (19:59 +0900)
Since find_client_by_id() walks g_pass_resource_monitor_client_head
list which is prevented by critical section, it should be mutually
exclusive, thus mutex lock/unlock is added to former/later of loop.

Change-Id: I6ea2dad42ff9dd08dec331db7ea4c9de550da618
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
lib/resource-monitor/resource-monitor.c

index 75bff2249bffec674c81362badfad6efc575866d..ccf384cfdcfa401c154a4740cb85aa0b2a630572 100644 (file)
@@ -89,13 +89,17 @@ static struct pass_resource_monitor_client *find_client_by_id(int id)
        struct pass_resource_monitor_client *client;
        GList *node;
 
+       g_mutex_lock(&g_mutex);
        for (node = g_pass_resource_monitor_client_head;
                        node != NULL;
                        node = node->next) {
                client = node->data;
-               if (client->id == id)
+               if (client->id == id) {
+                       g_mutex_unlock(&g_mutex);
                        return client;
+               }
        }
+       g_mutex_unlock(&g_mutex);
 
        return NULL;
 }