projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: possible infinite loop in disable ust event
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
kernel.c
diff --git
a/src/bin/lttng-sessiond/kernel.c
b/src/bin/lttng-sessiond/kernel.c
index d3a64537546406a8a30bb161e244b45858897c78..69665058a0e098c0b7a2bbd9dc1042d6f7b25f0a 100644
(file)
--- a/
src/bin/lttng-sessiond/kernel.c
+++ b/
src/bin/lttng-sessiond/kernel.c
@@
-81,7
+81,7
@@
int kernel_create_session(struct ltt_session *session, int tracer_fd)
assert(session);
/* Allocate data structure */
assert(session);
/* Allocate data structure */
- lks = trace_kernel_create_session(
session->path
);
+ lks = trace_kernel_create_session();
if (lks == NULL) {
ret = -1;
goto error;
if (lks == NULL) {
ret = -1;
goto error;
@@
-110,6
+110,9
@@
int kernel_create_session(struct ltt_session *session, int tracer_fd)
return 0;
error:
return 0;
error:
+ if (lks) {
+ trace_kernel_destroy_session(lks);
+ }
return ret;
}
return ret;
}
@@
-163,6
+166,10
@@
int kernel_create_channel(struct ltt_kernel_session *session,
return 0;
error:
return 0;
error:
+ if (lkc) {
+ free(lkc->channel);
+ free(lkc);
+ }
return -1;
}
return -1;
}
@@
-353,7
+360,7
@@
error:
int kernel_open_metadata(struct ltt_kernel_session *session)
{
int ret;
int kernel_open_metadata(struct ltt_kernel_session *session)
{
int ret;
- struct ltt_kernel_metadata *lkm;
+ struct ltt_kernel_metadata *lkm
= NULL
;
assert(session);
assert(session);
@@
-366,7
+373,7
@@
int kernel_open_metadata(struct ltt_kernel_session *session)
/* Kernel tracer metadata creation */
ret = kernctl_open_metadata(session->fd, &lkm->conf->attr);
if (ret < 0) {
/* Kernel tracer metadata creation */
ret = kernctl_open_metadata(session->fd, &lkm->conf->attr);
if (ret < 0) {
- goto error;
+ goto error
_open
;
}
lkm->fd = ret;
}
lkm->fd = ret;
@@
-382,6
+389,8
@@
int kernel_open_metadata(struct ltt_kernel_session *session)
return 0;
return 0;
+error_open:
+ trace_kernel_destroy_metadata(lkm);
error:
return -1;
}
error:
return -1;
}
@@
-451,6
+460,8
@@
int kernel_metadata_flush_buffer(int fd)
{
int ret;
{
int ret;
+ DBG("Kernel flushing metadata buffer on fd %d", fd);
+
ret = kernctl_buffer_flush(fd);
if (ret < 0) {
ERR("Fail to flush metadata buffers %d (ret: %d)", fd, ret);
ret = kernctl_buffer_flush(fd);
if (ret < 0) {
ERR("Fail to flush metadata buffers %d (ret: %d)", fd, ret);
@@
-536,6
+547,9
@@
int kernel_open_channel_stream(struct ltt_kernel_channel *channel)
PERROR("fcntl session fd");
}
PERROR("fcntl session fd");
}
+ lks->tracefile_size = channel->channel->attr.tracefile_size;
+ lks->tracefile_count = channel->channel->attr.tracefile_count;
+
/* Add stream to channe stream list */
cds_list_add(&lks->list, &channel->stream_list.head);
channel->stream_count++;
/* Add stream to channe stream list */
cds_list_add(&lks->list, &channel->stream_list.head);
channel->stream_count++;
This page took
0.025109 seconds
and
4
git commands to generate.