#include <assert.h>
#include <signal.h>
+#include <common/bytecode/bytecode.h>
#include <common/lttng-kernel.h>
#include <common/common.h>
#include <common/utils.h>
#include <common/sessiond-comm/sessiond-comm.h>
#include <common/filter/filter-ast.h>
-#include <common/filter/filter-bytecode.h>
#include "runas.h"
struct run_as_extract_sdt_probe_offsets_ret {
uint32_t num_offset;
- uint64_t offsets[LTTNG_KERNEL_MAX_UPROBE_NUM];
+ uint64_t offsets[LTTNG_KERNEL_ABI_MAX_UPROBE_NUM];
} LTTNG_PACKED;
struct run_as_generate_filter_bytecode_ret {
goto end;
}
- if (num_offset <= 0 || num_offset > LTTNG_KERNEL_MAX_UPROBE_NUM) {
+ if (num_offset <= 0 || num_offset > LTTNG_KERNEL_ABI_MAX_UPROBE_NUM) {
DBG("Wrong number of probes.");
ret = -1;
ret_value->_error = true;
for (i = 0; i < fd_count; i++) {
if (fds[i] < 0) {
- ERR("Attempt to send invalid file descriptor to master (fd = %i)",
+ DBG("Attempt to send invalid file descriptor (fd = %i)",
fds[i]);
/* Return 0 as this is not a fatal error. */
return 0;
}
for (i = 0; i < COMMAND_OUT_FD_COUNT(cmd); i++) {
- int ret_close = close(COMMAND_OUT_FDS(cmd, run_as_ret)[i]);
+ int fd = COMMAND_OUT_FDS(cmd, run_as_ret)[i];
+ if (fd >= 0) {
+ int ret_close = close(fd);
- if (ret_close < 0) {
- PERROR("Failed to close result file descriptor");
+ if (ret_close < 0) {
+ PERROR("Failed to close result file descriptor (fd = %i)",
+ fd);
+ }
}
}
end:
reset_sighandler();
set_worker_sighandlers();
+
+ logger_set_thread_name("Run-as worker", true);
+
if (clean_up_func) {
if (clean_up_func(clean_up_user_data) < 0) {
ERR("Run-as post-fork clean-up failed, exiting.");
LTTNG_HIDDEN
int run_as_generate_filter_bytecode(const char *filter_expression,
const struct lttng_credentials *creds,
- struct lttng_filter_bytecode **bytecode)
+ struct lttng_bytecode **bytecode)
{
int ret;
struct run_as_data data = {};
struct run_as_ret run_as_ret = {};
- const struct lttng_filter_bytecode *view_bytecode = NULL;
- struct lttng_filter_bytecode *local_bytecode = NULL;
+ const struct lttng_bytecode *view_bytecode = NULL;
+ struct lttng_bytecode *local_bytecode = NULL;
const uid_t uid = lttng_credentials_get_uid(creds);
const gid_t gid = lttng_credentials_get_gid(creds);
goto error;
}
- view_bytecode = (const struct lttng_filter_bytecode *) run_as_ret.u.generate_filter_bytecode.bytecode;
+ view_bytecode = (const struct lttng_bytecode *) run_as_ret.u.generate_filter_bytecode.bytecode;
local_bytecode = zmalloc(sizeof(*local_bytecode) + view_bytecode->len);
if (!local_bytecode) {