CONSUMER_DST_LOCAL;
session->ust_session->current_trace_chunk = new_trace_chunk;
- if (is_local_trace) {
+ if (is_local_trace) {
enum lttng_error_code ret_error_code;
ret_error_code = ust_app_create_channel_subdirectories(
if (ret_error_code != LTTNG_OK) {
goto error;
}
- }
+ }
cds_lfht_for_each_entry(
session->ust_session->consumer->socks->ht,
&iter, socket, node.node) {
session->id, new_trace_chunk,
DEFAULT_UST_TRACE_DIR);
pthread_mutex_unlock(socket->lock);
- if (ret) {
+ if (ret) {
goto error;
- }
- }
- }
+ }
+ }
+ }
if (session->kernel_session) {
const uint64_t relayd_id =
session->kernel_session->consumer->net_seq_index;
if (ret_error_code != LTTNG_OK) {
goto error;
}
- }
+ }
cds_lfht_for_each_entry(
session->kernel_session->consumer->socks->ht,
&iter, socket, node.node) {
session->id, new_trace_chunk,
DEFAULT_KERNEL_TRACE_DIR);
pthread_mutex_unlock(socket->lock);
- if (ret) {
+ if (ret) {
goto error;
- }
- }
- }
+ }
+ }
+ }
/*
* Update local current trace chunk state last, only if all remote
if (session->kernel_session) {
session->kernel_session->current_trace_chunk = NULL;
}
- /*
+ /*
* Release references taken in the case where all references could not
* be acquired.
*/
const char *base_path;
struct lttng_directory_handle *session_output_directory = NULL;
const struct lttng_credentials session_credentials = {
- .uid = session->uid,
- .gid = session->gid,
+ .uid = LTTNG_OPTIONAL_INIT_VALUE(session->uid),
+ .gid = LTTNG_OPTIONAL_INIT_VALUE(session->gid),
};
uint64_t next_chunk_id;
const struct consumer_output *output;
usess = session->ust_session;
ksess = session->kernel_session;
- /* Clean kernel session teardown, keeping data for destroy notifier. */
+ /* Clean kernel session teardown, keeping data for destroy notifier. */
kernel_destroy_session(ksess);
/* UST session teardown, keeping data for destroy notifier. */
* Broadcast after free-ing to ensure the memory is
* reclaimed before the main thread exits.
*/
+ ASSERT_LOCKED(ltt_session_list.lock);
pthread_cond_broadcast(<t_session_list.removal_cond);
}
}
}
/*
- * Check if the UID or GID match the session. Root user has access to all
+ * Check if the UID matches the session. Root user has access to all
* sessions.
*/
-int session_access_ok(struct ltt_session *session, uid_t uid, gid_t gid)
+bool session_access_ok(struct ltt_session *session, uid_t uid)
{
assert(session);
-
- if (uid != session->uid && gid != session->gid && uid != 0) {
- return 0;
- } else {
- return 1;
- }
+ return (uid == session->uid) || uid == 0;
}
/*