X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=lttng-sessiond%2Fmain.c;h=4828f1c179a914c87c5db77c2413cf9284536ed8;hp=f5f8dbe86a3999d4fb10a30e34f0892ea973dd66;hb=c7704d570e2e8c713da4d045e7f7307b5b9818cb;hpb=008dd0fe872d71d154867d25579b58a0a204d93d diff --git a/lttng-sessiond/main.c b/lttng-sessiond/main.c index f5f8dbe86..4828f1c17 100644 --- a/lttng-sessiond/main.c +++ b/lttng-sessiond/main.c @@ -44,7 +44,7 @@ #include #include -#include +#include "common/runas.h" #include "channel.h" #include "compat/poll.h" @@ -174,14 +174,10 @@ static struct ltt_session_list *session_list_ptr; int ust_consumerd64_fd = -1; int ust_consumerd32_fd = -1; -static const char *consumerd32_bin = - __stringify(CONFIG_CONSUMERD32_BIN); -static const char *consumerd64_bin = - __stringify(CONFIG_CONSUMERD64_BIN); -static const char *consumerd32_libdir = - __stringify(CONFIG_CONSUMERD32_LIBDIR); -static const char *consumerd64_libdir = - __stringify(CONFIG_CONSUMERD64_LIBDIR); +static const char *consumerd32_bin = CONFIG_CONSUMERD32_BIN; +static const char *consumerd64_bin = CONFIG_CONSUMERD64_BIN; +static const char *consumerd32_libdir = CONFIG_CONSUMERD32_LIBDIR; +static const char *consumerd64_libdir = CONFIG_CONSUMERD64_LIBDIR; static void setup_consumerd_path(void) @@ -1535,18 +1531,25 @@ static pid_t spawn_consumerd(struct consumer_data *consumer_data) switch (consumer_data->type) { case LTTNG_CONSUMER_KERNEL: /* - * Find out which consumerd to execute. We will - * first try the 64-bit path, then the - * sessiond's installation directory, and - * fallback on the 32-bit one, + * Find out which consumerd to execute. We will first try the + * 64-bit path, then the sessiond's installation directory, and + * fallback on the 32-bit one, */ + DBG3("Looking for a kernel consumer at these locations:"); + DBG3(" 1) %s", consumerd64_bin); + DBG3(" 2) %s/%s", INSTALL_BIN_PATH, CONSUMERD_FILE); + DBG3(" 3) %s", consumerd32_bin); if (stat(consumerd64_bin, &st) == 0) { + DBG3("Found location #1"); consumer_to_use = consumerd64_bin; } else if (stat(INSTALL_BIN_PATH "/" CONSUMERD_FILE, &st) == 0) { + DBG3("Found location #2"); consumer_to_use = INSTALL_BIN_PATH "/" CONSUMERD_FILE; } else if (stat(consumerd32_bin, &st) == 0) { + DBG3("Found location #3"); consumer_to_use = consumerd32_bin; } else { + DBG("Could not find any valid consumerd executable"); break; } DBG("Using kernel consumer at: %s", consumer_to_use); @@ -1745,7 +1748,7 @@ static int mount_debugfs(char *path) int ret; char *type = "debugfs"; - ret = mkdir_recursive_run_as(path, S_IRWXU | S_IRWXG, geteuid(), getegid()); + ret = run_as_mkdir_recursive(path, S_IRWXU | S_IRWXG, geteuid(), getegid()); if (ret < 0) { PERROR("Cannot create debugfs path"); goto error; @@ -1900,7 +1903,7 @@ static int create_ust_session(struct ltt_session *session, goto error; } - ret = mkdir_recursive_run_as(lus->pathname, S_IRWXU | S_IRWXG, + ret = run_as_mkdir_recursive(lus->pathname, S_IRWXU | S_IRWXG, session->uid, session->gid); if (ret < 0) { if (ret != -EEXIST) { @@ -1950,7 +1953,7 @@ static int create_kernel_session(struct ltt_session *session) session->kernel_session->consumer_fd = kconsumer_data.cmd_sock; } - ret = mkdir_recursive_run_as(session->kernel_session->trace_path, + ret = run_as_mkdir_recursive(session->kernel_session->trace_path, S_IRWXU | S_IRWXG, session->uid, session->gid); if (ret < 0) { if (ret != -EEXIST) { @@ -1966,14 +1969,12 @@ error: } /* - * Check if the UID or GID match the session. Root user has access to - * all sessions. + * Check if the UID or GID match the session. Root user has access to all + * sessions. */ -static int session_access_ok(struct ltt_session *session, - uid_t uid, gid_t gid) +static int session_access_ok(struct ltt_session *session, uid_t uid, gid_t gid) { - if (uid != session->uid && gid != session->gid - && uid != 0) { + if (uid != session->uid && gid != session->gid && uid != 0) { return 0; } else { return 1; @@ -2006,8 +2007,8 @@ static unsigned int lttng_sessions_count(uid_t uid, gid_t gid) * The session list lock MUST be acquired before calling this function. Use * session_lock_list() and session_unlock_list(). */ -static void list_lttng_sessions(struct lttng_session *sessions, - uid_t uid, gid_t gid) +static void list_lttng_sessions(struct lttng_session *sessions, uid_t uid, + gid_t gid) { unsigned int i = 0; struct ltt_session *session;