projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: kernel memory leak in error path
[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 856d4231004b02c558ea32f7cc86a7e315734331..064fdc382026e19eef78c132310153a5e863863f 100644
(file)
--- a/
src/bin/lttng-sessiond/kernel.c
+++ b/
src/bin/lttng-sessiond/kernel.c
@@
-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;
}
This page took
0.024175 seconds
and
4
git commands to generate.