Fix: sessiond: notification: missing unlock on client skip
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 19 Jul 2021 21:17:39 +0000 (17:17 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 20 Jul 2021 19:33:58 +0000 (15:33 -0400)
Skipping a client must be performed by using the dedicated "skip_client"
label which will unlock the client's lock before continuing the loop
rather than using 'continue' directly.

Currently, a client will remain locked when an hidden trigger emits
a notification to which it is subscribed.

1458230 Missing unlock

May result in deadlock if there is another attempt to acquire the lock.

In notification_client_list_send_evaluation: Missing a release of a lock
on a path (CWE-667)

Reported-by: Coverity Scan
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I8b69395b91b0ea59ae5e0beadebd9099db623121

src/bin/lttng-sessiond/notification-thread-events.c

index 9e5ec509135bd6d2818b6d6635ea6cdd0acf82ea..747740233094477c00fb59065cce2dd3f9861013 100644 (file)
@@ -4421,7 +4421,8 @@ int notification_client_list_send_evaluation(
                         * Notifications resulting from an hidden trigger are
                         * only sent to the session daemon.
                         */
-                       continue;
+                       DBG("Skipping client as the trigger is hidden and the client is not the session daemon");
+                       goto skip_client;
                }
 
                if (source_object_creds) {
This page took 0.028523 seconds and 5 git commands to generate.