X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsave.c;h=249d3030254e58f1883d06f9aebab09ecf3dfc1e;hp=b95ee2df0f4bbbb27e2281fd694df51bbaee0455;hb=997a03aacc9c43aaa4c2d8ca68a0337300891077;hpb=a7a533cd65d544e8beebabcca5fe906e27af4707 diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c index b95ee2df0..249d30302 100644 --- a/src/bin/lttng-sessiond/save.c +++ b/src/bin/lttng-sessiond/save.c @@ -1,18 +1,8 @@ /* - * Copyright (C) 2014 - Jérémie Galarneau + * Copyright (C) 2014 Jérémie Galarneau * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License, version 2 only, as - * published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 51 - * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _LGPL_SOURCE @@ -144,7 +134,7 @@ end: /* Return LTTNG_OK on success else a LTTNG_ERR* code. */ static int save_ust_channel_attributes(struct config_writer *writer, - struct lttng_ust_channel_attr *attr) + struct lttng_ust_abi_channel_attr *attr) { int ret; struct ltt_ust_channel *channel = NULL; @@ -191,7 +181,7 @@ int save_ust_channel_attributes(struct config_writer *writer, ret = config_writer_write_element_string(writer, config_element_output_type, - attr->output == LTTNG_UST_MMAP ? + attr->output == LTTNG_UST_ABI_MMAP ? config_output_type_mmap : config_output_type_splice); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; @@ -332,6 +322,9 @@ const char *get_kernel_context_type_string( case LTTNG_KERNEL_CONTEXT_PID_NS: context_type_string = config_event_context_pid_ns; break; + case LTTNG_KERNEL_CONTEXT_TIME_NS: + context_type_string = config_event_context_time_ns; + break; case LTTNG_KERNEL_CONTEXT_USER_NS: context_type_string = config_event_context_user_ns; break; @@ -383,69 +376,72 @@ const char *get_kernel_context_type_string( static const char *get_ust_context_type_string( - enum lttng_ust_context_type context_type) + enum lttng_ust_abi_context_type context_type) { const char *context_type_string; switch (context_type) { - case LTTNG_UST_CONTEXT_PROCNAME: + case LTTNG_UST_ABI_CONTEXT_PROCNAME: context_type_string = config_event_context_procname; break; - case LTTNG_UST_CONTEXT_VPID: + case LTTNG_UST_ABI_CONTEXT_VPID: context_type_string = config_event_context_vpid; break; - case LTTNG_UST_CONTEXT_VTID: + case LTTNG_UST_ABI_CONTEXT_VTID: context_type_string = config_event_context_vtid; break; - case LTTNG_UST_CONTEXT_IP: + case LTTNG_UST_ABI_CONTEXT_IP: context_type_string = config_event_context_ip; break; - case LTTNG_UST_CONTEXT_PTHREAD_ID: + case LTTNG_UST_ABI_CONTEXT_PTHREAD_ID: context_type_string = config_event_context_pthread_id; break; - case LTTNG_UST_CONTEXT_APP_CONTEXT: + case LTTNG_UST_ABI_CONTEXT_APP_CONTEXT: context_type_string = config_event_context_app; break; - case LTTNG_UST_CONTEXT_CGROUP_NS: + case LTTNG_UST_ABI_CONTEXT_CGROUP_NS: context_type_string = config_event_context_cgroup_ns; break; - case LTTNG_UST_CONTEXT_IPC_NS: + case LTTNG_UST_ABI_CONTEXT_IPC_NS: context_type_string = config_event_context_ipc_ns; break; - case LTTNG_UST_CONTEXT_MNT_NS: + case LTTNG_UST_ABI_CONTEXT_MNT_NS: context_type_string = config_event_context_mnt_ns; break; - case LTTNG_UST_CONTEXT_NET_NS: + case LTTNG_UST_ABI_CONTEXT_NET_NS: context_type_string = config_event_context_net_ns; break; - case LTTNG_UST_CONTEXT_PID_NS: + case LTTNG_UST_ABI_CONTEXT_TIME_NS: + context_type_string = config_event_context_time_ns; + break; + case LTTNG_UST_ABI_CONTEXT_PID_NS: context_type_string = config_event_context_pid_ns; break; - case LTTNG_UST_CONTEXT_USER_NS: + case LTTNG_UST_ABI_CONTEXT_USER_NS: context_type_string = config_event_context_user_ns; break; - case LTTNG_UST_CONTEXT_UTS_NS: + case LTTNG_UST_ABI_CONTEXT_UTS_NS: context_type_string = config_event_context_uts_ns; break; - case LTTNG_UST_CONTEXT_VUID: + case LTTNG_UST_ABI_CONTEXT_VUID: context_type_string = config_event_context_vuid; break; - case LTTNG_UST_CONTEXT_VEUID: + case LTTNG_UST_ABI_CONTEXT_VEUID: context_type_string = config_event_context_veuid; break; - case LTTNG_UST_CONTEXT_VSUID: + case LTTNG_UST_ABI_CONTEXT_VSUID: context_type_string = config_event_context_vsuid; break; - case LTTNG_UST_CONTEXT_VGID: + case LTTNG_UST_ABI_CONTEXT_VGID: context_type_string = config_event_context_vgid; break; - case LTTNG_UST_CONTEXT_VEGID: + case LTTNG_UST_ABI_CONTEXT_VEGID: context_type_string = config_event_context_vegid; break; - case LTTNG_UST_CONTEXT_VSGID: + case LTTNG_UST_ABI_CONTEXT_VSGID: context_type_string = config_event_context_vsgid; break; - case LTTNG_UST_CONTEXT_PERF_THREAD_COUNTER: + case LTTNG_UST_ABI_CONTEXT_PERF_THREAD_COUNTER: /* * Error, should not be stored in the XML, perf contexts * are stored as a node of type event_perf_context_type. @@ -483,18 +479,18 @@ const char *get_buffer_type_string( static const char *get_loglevel_type_string( - enum lttng_ust_loglevel_type loglevel_type) + enum lttng_ust_abi_loglevel_type loglevel_type) { const char *loglevel_type_string; switch (loglevel_type) { - case LTTNG_UST_LOGLEVEL_ALL: + case LTTNG_UST_ABI_LOGLEVEL_ALL: loglevel_type_string = config_loglevel_type_all; break; - case LTTNG_UST_LOGLEVEL_RANGE: + case LTTNG_UST_ABI_LOGLEVEL_RANGE: loglevel_type_string = config_loglevel_type_range; break; - case LTTNG_UST_LOGLEVEL_SINGLE: + case LTTNG_UST_ABI_LOGLEVEL_SINGLE: loglevel_type_string = config_loglevel_type_single; break; default: @@ -1055,7 +1051,7 @@ int save_ust_event(struct config_writer *writer, goto end; } - if (event->attr.instrumentation != LTTNG_UST_TRACEPOINT) { + if (event->attr.instrumentation != LTTNG_UST_ABI_TRACEPOINT) { ERR("Unsupported UST instrumentation type."); ret = LTTNG_ERR_INVALID; goto end; @@ -1083,7 +1079,7 @@ int save_ust_event(struct config_writer *writer, } /* The log level is irrelevant if no "filtering" is enabled */ - if (event->attr.loglevel_type != LTTNG_UST_LOGLEVEL_ALL) { + if (event->attr.loglevel_type != LTTNG_UST_ABI_LOGLEVEL_ALL) { ret = config_writer_write_element_signed_int(writer, config_element_loglevel, event->attr.loglevel); if (ret) { @@ -1192,10 +1188,10 @@ int init_ust_event_from_agent_event(struct ltt_ust_event *ust_event, struct agent_event *agent_event) { int ret; - enum lttng_ust_loglevel_type ust_loglevel_type; + enum lttng_ust_abi_loglevel_type ust_loglevel_type; - ust_event->enabled = agent_event->enabled; - ust_event->attr.instrumentation = LTTNG_UST_TRACEPOINT; + ust_event->enabled = AGENT_EVENT_IS_ENABLED(agent_event); + ust_event->attr.instrumentation = LTTNG_UST_ABI_TRACEPOINT; if (lttng_strncpy(ust_event->attr.name, agent_event->name, LTTNG_SYMBOL_NAME_LEN)) { ret = LTTNG_ERR_INVALID; @@ -1203,13 +1199,13 @@ int init_ust_event_from_agent_event(struct ltt_ust_event *ust_event, } switch (agent_event->loglevel_type) { case LTTNG_EVENT_LOGLEVEL_ALL: - ust_loglevel_type = LTTNG_UST_LOGLEVEL_ALL; + ust_loglevel_type = LTTNG_UST_ABI_LOGLEVEL_ALL; break; case LTTNG_EVENT_LOGLEVEL_SINGLE: - ust_loglevel_type = LTTNG_UST_LOGLEVEL_SINGLE; + ust_loglevel_type = LTTNG_UST_ABI_LOGLEVEL_SINGLE; break; case LTTNG_EVENT_LOGLEVEL_RANGE: - ust_loglevel_type = LTTNG_UST_LOGLEVEL_RANGE; + ust_loglevel_type = LTTNG_UST_ABI_LOGLEVEL_RANGE; break; default: ERR("Invalid agent_event loglevel_type."); @@ -1244,7 +1240,6 @@ int save_agent_events(struct config_writer *writer, rcu_read_lock(); cds_lfht_for_each_entry(agent->events->ht, &iter.iter, node, node) { - int ret; struct agent_event *agent_event; struct ltt_ust_event fake_event; @@ -1555,10 +1550,10 @@ int save_ust_context(struct config_writer *writer, } switch (ctx->ctx.ctx) { - case LTTNG_UST_CONTEXT_PERF_THREAD_COUNTER: + case LTTNG_UST_ABI_CONTEXT_PERF_THREAD_COUNTER: ret = save_ust_context_perf_thread_counter(writer, ctx); break; - case LTTNG_UST_CONTEXT_APP_CONTEXT: + case LTTNG_UST_ABI_CONTEXT_APP_CONTEXT: ret = save_ust_context_app_ctx(writer, ctx); break; default: @@ -1830,50 +1825,47 @@ const char *get_config_domain_str(enum lttng_domain_type domain) } /* Return LTTNG_OK on success else a LTTNG_ERR* code. */ -static int save_id_tracker(struct config_writer *writer, +static int save_process_attr_tracker(struct config_writer *writer, struct ltt_session *sess, int domain, - enum lttng_tracker_type tracker_type) + enum lttng_process_attr process_attr) { int ret = LTTNG_OK; - size_t nr_ids = 0, i; - struct lttng_tracker_ids *ids = NULL; const char *element_id_tracker, *element_target_id, *element_id; - const struct lttng_tracker_id *id; - enum lttng_tracker_id_status status; - int value; - const char *string; - - switch (tracker_type) { - case LTTNG_TRACKER_PID: - element_id_tracker = config_element_pid_tracker; - element_target_id = config_element_target_pid; - element_id = config_element_pid; - break; - case LTTNG_TRACKER_VPID: - element_id_tracker = config_element_vpid_tracker; - element_target_id = config_element_target_vpid; - element_id = config_element_id; - break; - case LTTNG_TRACKER_UID: - element_id_tracker = config_element_uid_tracker; - element_target_id = config_element_target_uid; - element_id = config_element_id; - break; - case LTTNG_TRACKER_VUID: - element_id_tracker = config_element_vuid_tracker; - element_target_id = config_element_target_vuid; - element_id = config_element_id; - break; - case LTTNG_TRACKER_GID: - element_id_tracker = config_element_gid_tracker; - element_target_id = config_element_target_gid; - element_id = config_element_id; - break; - case LTTNG_TRACKER_VGID: - element_id_tracker = config_element_vgid_tracker; - element_target_id = config_element_target_vgid; - element_id = config_element_id; + const struct process_attr_tracker *tracker; + enum lttng_tracking_policy tracking_policy; + struct lttng_process_attr_values *values = NULL; + + switch (process_attr) { + case LTTNG_PROCESS_ATTR_PROCESS_ID: + element_id_tracker = config_element_process_attr_tracker_pid; + element_target_id = config_element_process_attr_pid_value; + element_id = config_element_process_attr_id; + break; + case LTTNG_PROCESS_ATTR_VIRTUAL_PROCESS_ID: + element_id_tracker = config_element_process_attr_tracker_vpid; + element_target_id = config_element_process_attr_vpid_value; + element_id = config_element_process_attr_id; + break; + case LTTNG_PROCESS_ATTR_USER_ID: + element_id_tracker = config_element_process_attr_tracker_uid; + element_target_id = config_element_process_attr_uid_value; + element_id = config_element_process_attr_id; + break; + case LTTNG_PROCESS_ATTR_VIRTUAL_USER_ID: + element_id_tracker = config_element_process_attr_tracker_vuid; + element_target_id = config_element_process_attr_vuid_value; + element_id = config_element_process_attr_id; + break; + case LTTNG_PROCESS_ATTR_GROUP_ID: + element_id_tracker = config_element_process_attr_tracker_gid; + element_target_id = config_element_process_attr_gid_value; + element_id = config_element_process_attr_id; + break; + case LTTNG_PROCESS_ATTR_VIRTUAL_GROUP_ID: + element_id_tracker = config_element_process_attr_tracker_vgid; + element_target_id = config_element_process_attr_vgid_value; + element_id = config_element_process_attr_id; break; default: ret = LTTNG_ERR_SAVE_IO_FAIL; @@ -1883,41 +1875,31 @@ static int save_id_tracker(struct config_writer *writer, switch (domain) { case LTTNG_DOMAIN_KERNEL: { - ret = kernel_list_tracker_ids( - tracker_type, sess->kernel_session, &ids); - if (ret != LTTNG_OK) { - ret = LTTNG_ERR_KERN_LIST_FAIL; - goto end; - } + tracker = kernel_get_process_attr_tracker( + sess->kernel_session, process_attr); + assert(tracker); break; } case LTTNG_DOMAIN_UST: { - ret = trace_ust_list_tracker_ids( - tracker_type, sess->ust_session, &ids); - if (ret != LTTNG_OK) { - ret = LTTNG_ERR_UST_LIST_FAIL; - goto end; - } + tracker = trace_ust_get_process_attr_tracker( + sess->ust_session, process_attr); + assert(tracker); break; } case LTTNG_DOMAIN_JUL: case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_PYTHON: default: - ret = LTTNG_ERR_UNKNOWN_DOMAIN; + ret = LTTNG_ERR_UNSUPPORTED_DOMAIN; goto end; } - nr_ids = lttng_tracker_ids_get_count(ids); - - if (nr_ids == 1) { - id = lttng_tracker_ids_get_at_index(ids, 0); - if (id && lttng_tracker_id_get_type(id) == LTTNG_ID_ALL) { - /* Tracking all, nothing to output. */ - ret = LTTNG_OK; - goto end; - } + tracking_policy = process_attr_tracker_get_tracking_policy(tracker); + if (tracking_policy == LTTNG_TRACKING_POLICY_INCLUDE_ALL) { + /* Tracking all, nothing to output. */ + ret = LTTNG_OK; + goto end; } ret = config_writer_open_element(writer, element_id_tracker); @@ -1926,68 +1908,76 @@ static int save_id_tracker(struct config_writer *writer, goto end; } - ret = config_writer_open_element(writer, config_element_targets); + ret = config_writer_open_element( + writer, config_element_process_attr_values); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } - if (nr_ids == 0) { - /* Tracking none: empty list. */ - ret = config_writer_open_element(writer, element_target_id); - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; - } + if (tracking_policy == LTTNG_TRACKING_POLICY_INCLUDE_SET) { + unsigned int i, count; + enum process_attr_tracker_status status = + process_attr_tracker_get_inclusion_set( + tracker, &values); - /* /$element_target_id */ - ret = config_writer_close_element(writer); - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; + if (status != PROCESS_ATTR_TRACKER_STATUS_OK) { + ret = LTTNG_ERR_NOMEM; goto end; } - } else { - /* Tracking list. */ - for (i = 0; i < nr_ids; i++) { - id = lttng_tracker_ids_get_at_index(ids, i); - if (!id) { + + count = _lttng_process_attr_values_get_count(values); + + for (i = 0; i < count; i++) { + unsigned int integral_value = UINT_MAX; + const char *name = NULL; + const struct process_attr_value *value = + lttng_process_attr_tracker_values_get_at_index( + values, i); + + assert(value); + ret = config_writer_open_element( + writer, element_target_id); + if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } - switch (lttng_tracker_id_get_type(id)) { - case LTTNG_ID_VALUE: - ret = config_writer_open_element( - writer, element_target_id); - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; - } - status = lttng_tracker_id_get_value(id, &value); - ret = config_writer_write_element_unsigned_int( - writer, element_id, value); + + switch (value->type) { + case LTTNG_PROCESS_ATTR_VALUE_TYPE_PID: + integral_value = + (unsigned int) value->value.pid; break; - case LTTNG_ID_STRING: - ret = config_writer_open_element( - writer, element_target_id); - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; - } - status = lttng_tracker_id_get_string( - id, &string); - ret = config_writer_write_element_string(writer, - config_element_name, string); + case LTTNG_PROCESS_ATTR_VALUE_TYPE_UID: + integral_value = + (unsigned int) value->value.uid; + break; + case LTTNG_PROCESS_ATTR_VALUE_TYPE_GID: + integral_value = + (unsigned int) value->value.gid; + break; + case LTTNG_PROCESS_ATTR_VALUE_TYPE_USER_NAME: + name = value->value.user_name; + assert(name); + break; + case LTTNG_PROCESS_ATTR_VALUE_TYPE_GROUP_NAME: + name = value->value.group_name; + assert(name); break; default: - /* Unexpected. */ - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; + abort(); } - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; + + if (name) { + ret = config_writer_write_element_string(writer, + config_element_name, name); + } else { + ret = config_writer_write_element_unsigned_int( + writer, element_id, + integral_value); } - if (status != LTTNG_TRACKER_ID_STATUS_OK) { + + if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } @@ -2001,7 +1991,7 @@ static int save_id_tracker(struct config_writer *writer, } } - /* /targets */ + /* /values */ ret = config_writer_close_element(writer); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; @@ -2017,12 +2007,12 @@ static int save_id_tracker(struct config_writer *writer, ret = LTTNG_OK; end: - lttng_tracker_ids_destroy(ids); + lttng_process_attr_values_destroy(values); return ret; } /* Return LTTNG_OK on success else a LTTNG_ERR* code. */ -static int save_id_trackers(struct config_writer *writer, +static int save_process_attr_trackers(struct config_writer *writer, struct ltt_session *sess, int domain) { @@ -2030,40 +2020,61 @@ static int save_id_trackers(struct config_writer *writer, switch (domain) { case LTTNG_DOMAIN_KERNEL: - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_PID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VPID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_UID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VUID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_GID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VGID); - if (ret != LTTNG_OK) - return ret; + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_PROCESS_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_PROCESS_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_USER_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_USER_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_GROUP_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_GROUP_ID); + if (ret != LTTNG_OK) { + goto end; + } break; case LTTNG_DOMAIN_UST: - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VPID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VUID); - if (ret != LTTNG_OK) - return ret; - ret = save_id_tracker(writer, sess, domain, LTTNG_TRACKER_VGID); - if (ret != LTTNG_OK) - return ret; + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_PROCESS_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_USER_ID); + if (ret != LTTNG_OK) { + goto end; + } + ret = save_process_attr_tracker(writer, sess, domain, + LTTNG_PROCESS_ATTR_VIRTUAL_GROUP_ID); + if (ret != LTTNG_OK) { + goto end; + } break; default: - return LTTNG_ERR_INVALID; + ret = LTTNG_ERR_INVALID; + goto end; } - return LTTNG_OK; + ret = LTTNG_OK; +end: + return ret; } /* Return LTTNG_OK on success else a LTTNG_ERR* code. */ @@ -2144,14 +2155,15 @@ int save_ust_domain(struct config_writer *writer, } if (domain == LTTNG_DOMAIN_UST) { - ret = config_writer_open_element(writer, - config_element_trackers); + ret = config_writer_open_element( + writer, config_element_process_attr_trackers); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } - ret = save_id_trackers(writer, session, LTTNG_DOMAIN_UST); + ret = save_process_attr_trackers( + writer, session, LTTNG_DOMAIN_UST); if (ret != LTTNG_OK) { goto end; } @@ -2208,14 +2220,15 @@ int save_domains(struct config_writer *writer, struct ltt_session *session) goto end; } - ret = config_writer_open_element(writer, - config_element_trackers); + ret = config_writer_open_element( + writer, config_element_process_attr_trackers); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } - ret = save_id_trackers(writer, session, LTTNG_DOMAIN_KERNEL); + ret = save_process_attr_trackers( + writer, session, LTTNG_DOMAIN_KERNEL); if (ret != LTTNG_OK) { goto end; } @@ -2619,8 +2632,7 @@ int save_session(struct ltt_session *session, memset(config_file_path, 0, sizeof(config_file_path)); if (!session_access_ok(session, - LTTNG_SOCK_GET_UID_CRED(creds), - LTTNG_SOCK_GET_GID_CRED(creds)) || session->destroyed) { + LTTNG_SOCK_GET_UID_CRED(creds)) || session->destroyed) { ret = LTTNG_ERR_EPERM; goto end; }