projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: release reference to ltt_session on error instead of free()
[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 be263943f0211a9cffdb563f0a22ddfda9e9653c..8e972b0693cc28362fe36e9a80b040d128bed62c 100644
(file)
--- a/
src/bin/lttng-sessiond/kernel.c
+++ b/
src/bin/lttng-sessiond/kernel.c
@@
-1233,17
+1233,18
@@
void kernel_destroy_channel(struct ltt_kernel_channel *kchan)
/*
* Take a snapshot for a given kernel session.
*
/*
* Take a snapshot for a given kernel session.
*
- * Return
0
on success or else return a LTTNG_ERR code.
+ * Return
LTTNG_OK
on success or else return a LTTNG_ERR code.
*/
*/
-
int
kernel_snapshot_record(struct ltt_kernel_session *ksess,
+
enum lttng_error_code
kernel_snapshot_record(struct ltt_kernel_session *ksess,
struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int err, ret, saved_metadata_fd;
struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int err, ret, saved_metadata_fd;
+ enum lttng_error_code status = LTTNG_OK;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_metadata *saved_metadata;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_metadata *saved_metadata;
- struct ltt_session *session;
+ struct ltt_session *session
= NULL
;
uint64_t trace_archive_id;
assert(ksess);
uint64_t trace_archive_id;
assert(ksess);
@@
-1266,13
+1267,13
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
ret = kernel_open_metadata(ksess);
if (ret < 0) {
ret = kernel_open_metadata(ksess);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_META_FAIL;
+
status
= LTTNG_ERR_KERN_META_FAIL;
goto error;
}
ret = kernel_open_metadata_stream(ksess);
if (ret < 0) {
goto error;
}
ret = kernel_open_metadata_stream(ksess);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_META_FAIL;
+
status
= LTTNG_ERR_KERN_META_FAIL;
goto error_open_stream;
}
goto error_open_stream;
}
@@
-1296,19
+1297,18
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
/* Put back the saved consumer output into the session. */
ksess->consumer = saved_output;
if (ret < 0) {
/* Put back the saved consumer output into the session. */
ksess->consumer = saved_output;
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_CONSUMER_FAIL;
+
status
= LTTNG_ERR_KERN_CONSUMER_FAIL;
goto error_consumer;
}
/* For each channel, ask the consumer to snapshot it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
goto error_consumer;
}
/* For each channel, ask the consumer to snapshot it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
-
ret
= consumer_snapshot_channel(socket, chan->key, output, 0,
+
status
= consumer_snapshot_channel(socket, chan->key, output, 0,
ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait,
nb_packets_per_stream,
trace_archive_id);
ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait,
nb_packets_per_stream,
trace_archive_id);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
+ if (status != LTTNG_OK) {
(void) kernel_consumer_destroy_metadata(socket,
ksess->metadata);
goto error_consumer;
(void) kernel_consumer_destroy_metadata(socket,
ksess->metadata);
goto error_consumer;
@@
-1316,12
+1316,11
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
}
/* Snapshot metadata, */
}
/* Snapshot metadata, */
-
ret
= consumer_snapshot_channel(socket, ksess->metadata->key, output,
+
status
= consumer_snapshot_channel(socket, ksess->metadata->key, output,
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0,
trace_archive_id);
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0,
trace_archive_id);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
+ if (status != LTTNG_OK) {
goto error_consumer;
}
goto error_consumer;
}
@@
-1332,8
+1331,6
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
(void) kernel_consumer_destroy_metadata(socket, ksess->metadata);
}
(void) kernel_consumer_destroy_metadata(socket, ksess->metadata);
}
- ret = LTTNG_OK;
-
error_consumer:
/* Close newly opened metadata stream. It's now on the consumer side. */
err = close(ksess->metadata_stream_fd);
error_consumer:
/* Close newly opened metadata stream. It's now on the consumer side. */
err = close(ksess->metadata_stream_fd);
@@
-1347,9
+1344,11
@@
error:
/* Restore metadata state.*/
ksess->metadata = saved_metadata;
ksess->metadata_stream_fd = saved_metadata_fd;
/* Restore metadata state.*/
ksess->metadata = saved_metadata;
ksess->metadata_stream_fd = saved_metadata_fd;
-
+ if (session) {
+ session_put(session);
+ }
rcu_read_unlock();
rcu_read_unlock();
- return
ret
;
+ return
status
;
}
/*
}
/*
@@
-1401,11
+1400,12
@@
error:
/*
* Rotate a kernel session.
*
/*
* Rotate a kernel session.
*
- * Return
0 on success or else return a LTTNG_ERR
code.
+ * Return
LTTNG_OK on success or else an LTTng error
code.
*/
*/
-
int
kernel_rotate_session(struct ltt_session *session)
+
enum lttng_error_code
kernel_rotate_session(struct ltt_session *session)
{
int ret;
{
int ret;
+ enum lttng_error_code status = LTTNG_OK;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_session *ksess = session->kernel_session;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_session *ksess = session->kernel_session;
@@
-1436,7
+1436,7
@@
int kernel_rotate_session(struct ltt_session *session)
/* is_metadata_channel */ false,
session->current_archive_id);
if (ret < 0) {
/* is_metadata_channel */ false,
session->current_archive_id);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_CONSUMER_FAIL;
+
status
= LTTNG_ERR_KERN_CONSUMER_FAIL;
goto error;
}
}
goto error;
}
}
@@
-1450,14
+1450,12
@@
int kernel_rotate_session(struct ltt_session *session)
/* is_metadata_channel */ true,
session->current_archive_id);
if (ret < 0) {
/* is_metadata_channel */ true,
session->current_archive_id);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_CONSUMER_FAIL;
+
status
= LTTNG_ERR_KERN_CONSUMER_FAIL;
goto error;
}
}
goto error;
}
}
- ret = LTTNG_OK;
-
error:
rcu_read_unlock();
error:
rcu_read_unlock();
- return
ret
;
+ return
status
;
}
}
This page took
0.026403 seconds
and
4
git commands to generate.