projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup: send_fds functions are not const-correct
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
kernel-consumer.c
diff --git
a/src/bin/lttng-sessiond/kernel-consumer.c
b/src/bin/lttng-sessiond/kernel-consumer.c
index 0f59aa24f51decc781c760ddef1007399851355d..74c4b302320de5b49926f1ff497c31b59f4fb9fa 100644
(file)
--- a/
src/bin/lttng-sessiond/kernel-consumer.c
+++ b/
src/bin/lttng-sessiond/kernel-consumer.c
@@
-20,6
+20,7
@@
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <inttypes.h>
#include <common/common.h>
#include <common/defaults.h>
#include <common/common.h>
#include <common/defaults.h>
@@
-44,11
+45,20
@@
static char *create_channel_path(struct consumer_output *consumer,
/* Get the right path name destination */
if (consumer->type == CONSUMER_DST_LOCAL) {
/* Set application path to the destination path */
/* Get the right path name destination */
if (consumer->type == CONSUMER_DST_LOCAL) {
/* Set application path to the destination path */
- ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s",
- consumer->dst.trace_path, consumer->subdir);
+ ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s%s",
+ consumer->dst.session_root_path,
+ consumer->chunk_path,
+ consumer->subdir);
if (ret < 0) {
PERROR("snprintf kernel channel path");
goto error;
if (ret < 0) {
PERROR("snprintf kernel channel path");
goto error;
+ } else if (ret >= sizeof(tmp_path)) {
+ ERR("Kernel channel path exceeds the maximal allowed length of of %zu bytes (%i bytes required) with path \"%s%s%s\"",
+ sizeof(tmp_path), ret,
+ consumer->dst.session_root_path,
+ consumer->chunk_path,
+ consumer->subdir);
+ goto error;
}
pathname = lttng_strndup(tmp_path, sizeof(tmp_path));
if (!pathname) {
}
pathname = lttng_strndup(tmp_path, sizeof(tmp_path));
if (!pathname) {
@@
-66,10
+76,18
@@
static char *create_channel_path(struct consumer_output *consumer,
}
DBG3("Kernel local consumer tracefile path: %s", pathname);
} else {
}
DBG3("Kernel local consumer tracefile path: %s", pathname);
} else {
- ret = snprintf(tmp_path, sizeof(tmp_path), "%s", consumer->subdir);
+ ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s",
+ consumer->dst.net.base_dir,
+ consumer->subdir);
if (ret < 0) {
PERROR("snprintf kernel metadata path");
goto error;
if (ret < 0) {
PERROR("snprintf kernel metadata path");
goto error;
+ } else if (ret >= sizeof(tmp_path)) {
+ ERR("Kernel channel path exceeds the maximal allowed length of of %zu bytes (%i bytes required) with path \"%s%s\"",
+ sizeof(tmp_path), ret,
+ consumer->dst.net.base_dir,
+ consumer->subdir);
+ goto error;
}
pathname = lttng_strndup(tmp_path, sizeof(tmp_path));
if (!pathname) {
}
pathname = lttng_strndup(tmp_path, sizeof(tmp_path));
if (!pathname) {
@@
-129,7
+147,7
@@
int kernel_consumer_add_channel(struct consumer_socket *sock,
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
- channel->
fd
,
+ channel->
key
,
ksession->id,
pathname,
ksession->uid,
ksession->id,
pathname,
ksession->uid,
@@
-160,7
+178,7
@@
int kernel_consumer_add_channel(struct consumer_socket *sock,
status = notification_thread_command_add_channel(
notification_thread_handle, session->name,
ksession->uid, ksession->gid,
status = notification_thread_command_add_channel(
notification_thread_handle, session->name,
ksession->uid, ksession->gid,
- channel->channel->name, channel->
fd
,
+ channel->channel->name, channel->
key
,
LTTNG_DOMAIN_KERNEL,
channel->channel->attr.subbuf_size * channel->channel->attr.num_subbuf);
rcu_read_unlock();
LTTNG_DOMAIN_KERNEL,
channel->channel->attr.subbuf_size * channel->channel->attr.num_subbuf);
rcu_read_unlock();
@@
-178,6
+196,8
@@
error:
/*
* Sending metadata to the consumer with command ADD_CHANNEL and ADD_STREAM.
/*
* Sending metadata to the consumer with command ADD_CHANNEL and ADD_STREAM.
+ *
+ * The consumer socket lock must be held by the caller.
*/
int kernel_consumer_add_metadata(struct consumer_socket *sock,
struct ltt_kernel_session *session, unsigned int monitor)
*/
int kernel_consumer_add_metadata(struct consumer_socket *sock,
struct ltt_kernel_session *session, unsigned int monitor)
@@
-211,7
+231,7
@@
int kernel_consumer_add_metadata(struct consumer_socket *sock,
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
- session->metadata->
fd
,
+ session->metadata->
key
,
session->id,
pathname,
session->uid,
session->id,
pathname,
session->uid,
@@
-236,7
+256,7
@@
int kernel_consumer_add_metadata(struct consumer_socket *sock,
/* Prep stream message structure */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
/* Prep stream message structure */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
- session->metadata->
fd
,
+ session->metadata->
key
,
session->metadata_stream_fd,
0); /* CPU: 0 for metadata. */
session->metadata_stream_fd,
0); /* CPU: 0 for metadata. */
@@
-282,7
+302,7
@@
int kernel_consumer_add_stream(struct consumer_socket *sock,
/* Prep stream consumer message */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
/* Prep stream consumer message */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
- channel->
fd
,
+ channel->
key
,
stream->fd,
stream->cpu);
stream->fd,
stream->cpu);
@@
-336,6
+356,8
@@
error:
/*
* Send all stream fds of kernel channel to the consumer.
/*
* Send all stream fds of kernel channel to the consumer.
+ *
+ * The consumer socket lock must be held by the caller.
*/
int kernel_consumer_send_channel_stream(struct consumer_socket *sock,
struct ltt_kernel_channel *channel, struct ltt_kernel_session *session,
*/
int kernel_consumer_send_channel_stream(struct consumer_socket *sock,
struct ltt_kernel_channel *channel, struct ltt_kernel_session *session,
@@
-388,6
+410,8
@@
error:
/*
* Send all stream fds of the kernel session to the consumer.
/*
* Send all stream fds of the kernel session to the consumer.
+ *
+ * The consumer socket lock must be held by the caller.
*/
int kernel_consumer_send_session(struct consumer_socket *sock,
struct ltt_kernel_session *session)
*/
int kernel_consumer_send_session(struct consumer_socket *sock,
struct ltt_kernel_session *session)
@@
-432,7
+456,7
@@
int kernel_consumer_send_session(struct consumer_socket *sock,
* Inform the relay that all the streams for the
* channel were sent.
*/
* Inform the relay that all the streams for the
* channel were sent.
*/
- ret = kernel_consumer_streams_sent(sock, session, chan->
fd
);
+ ret = kernel_consumer_streams_sent(sock, session, chan->
key
);
if (ret < 0) {
goto error;
}
if (ret < 0) {
goto error;
}
@@
-457,11
+481,11
@@
int kernel_consumer_destroy_channel(struct consumer_socket *socket,
assert(channel);
assert(socket);
assert(channel);
assert(socket);
- DBG("Sending kernel consumer destroy channel key %
d", channel->fd
);
+ DBG("Sending kernel consumer destroy channel key %
" PRIu64, channel->key
);
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
- msg.u.destroy_channel.key = channel->
fd
;
+ msg.u.destroy_channel.key = channel->
key
;
pthread_mutex_lock(socket->lock);
health_code_update();
pthread_mutex_lock(socket->lock);
health_code_update();
@@
-486,11
+510,11
@@
int kernel_consumer_destroy_metadata(struct consumer_socket *socket,
assert(metadata);
assert(socket);
assert(metadata);
assert(socket);
- DBG("Sending kernel consumer destroy channel key %
d", metadata->fd
);
+ DBG("Sending kernel consumer destroy channel key %
" PRIu64, metadata->key
);
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
- msg.u.destroy_channel.key = metadata->
fd
;
+ msg.u.destroy_channel.key = metadata->
key
;
pthread_mutex_lock(socket->lock);
health_code_update();
pthread_mutex_lock(socket->lock);
health_code_update();
This page took
0.026914 seconds
and
4
git commands to generate.