Fix: ust-consumerd: set `hangup_flush_done` in a locked context
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 21 Jun 2022 20:21:17 +0000 (16:21 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 19 Aug 2022 15:17:54 +0000 (11:17 -0400)
hangup_flush_done is updated after releasing the stream lock. This
doesn't appear to be a problem right now since this attribute is
apparently always accessed by the same thread, but it is conceptually
sus.

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

src/common/ust-consumer/ust-consumer.c

index 83080edde314285a434064e54b5db1699010570c..0ff3ba0f083b717f1899d973445f01c29e4ae293 100644 (file)
@@ -2427,8 +2427,9 @@ void lttng_ustconsumer_on_stream_hangup(struct lttng_consumer_stream *stream)
                ustctl_flush_buffer(stream->ustream, 0);
                stream->quiescent = true;
        }
-       pthread_mutex_unlock(&stream->lock);
+
        stream->hangup_flush_done = 1;
+       pthread_mutex_unlock(&stream->lock);
 }
 
 void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan)
This page took 0.031355 seconds and 4 git commands to generate.