X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=libust%2Fltt-events.c;h=3457699f812edfaa347aec64086321b2aa341b49;hb=9f3fdbc68877e1f12b6cedb15ef76d9af9b48bac;hp=a94e8f9a1dde6a6e315133e59c66e3659455f99d;hpb=976fe9eaae642a5263ec6d7a1572251fa81dbd2f;p=lttng-ust.git diff --git a/libust/ltt-events.c b/libust/ltt-events.c index a94e8f9a..3457699f 100644 --- a/libust/ltt-events.c +++ b/libust/ltt-events.c @@ -34,8 +34,6 @@ int _ltt_event_metadata_statedump(struct ltt_session *session, static int _ltt_session_metadata_statedump(struct ltt_session *session); - -static void synchronize_trace(void) { synchronize_sched(); @@ -108,12 +106,9 @@ int ltt_session_enable(struct ltt_session *session) ACCESS_ONCE(session->active) = 1; ACCESS_ONCE(session->been_active) = 1; - synchronize_trace(); /* Wait for in-flight events to complete */ ret = _ltt_session_metadata_statedump(session); - if (ret) { + if (ret) ACCESS_ONCE(session->active) = 0; - synchronize_trace(); /* Wait for in-flight events to complete */ - } end: mutex_unlock(&sessions_mutex); return ret; @@ -129,7 +124,6 @@ int ltt_session_disable(struct ltt_session *session) goto end; } ACCESS_ONCE(session->active) = 0; - synchronize_trace(); /* Wait for in-flight events to complete */ end: mutex_unlock(&sessions_mutex); return ret; @@ -139,6 +133,8 @@ int ltt_channel_enable(struct ltt_channel *channel) { int old; + if (channel == channel->session->metadata) + return -EPERM; old = xchg(&channel->enabled, 1); if (old) return -EEXIST; @@ -149,6 +145,8 @@ int ltt_channel_disable(struct ltt_channel *channel) { int old; + if (channel == channel->session->metadata) + return -EPERM; old = xchg(&channel->enabled, 0); if (!old) return -EEXIST; @@ -159,6 +157,8 @@ int ltt_event_enable(struct ltt_event *event) { int old; + if (event->chan == event->chan->session->metadata) + return -EPERM; old = xchg(&event->enabled, 1); if (old) return -EEXIST; @@ -169,6 +169,8 @@ int ltt_event_disable(struct ltt_event *event) { int old; + if (event->chan == event->chan->session->metadata) + return -EPERM; old = xchg(&event->enabled, 0); if (!old) return -EEXIST;