return 0;
error:
+ if (lks) {
+ trace_kernel_destroy_session(lks);
+ }
return ret;
}
return 0;
error:
+ if (lkc) {
+ free(lkc->channel);
+ free(lkc);
+ }
return -1;
}
int kernel_open_metadata(struct ltt_kernel_session *session)
{
int ret;
- struct ltt_kernel_metadata *lkm;
+ struct ltt_kernel_metadata *lkm = NULL;
assert(session);
/* Kernel tracer metadata creation */
ret = kernctl_open_metadata(session->fd, &lkm->conf->attr);
if (ret < 0) {
- goto error;
+ goto error_open;
}
lkm->fd = ret;
return 0;
+error_open:
+ trace_kernel_destroy_metadata(lkm);
error:
return -1;
}
{
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);