X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel.c;h=39006ab2f37b508107fb468a427debb7d82bb566;hp=dd815c44536fd8629d01537d6a6d749f70033147;hb=bd29c13d4c9296705a4444404a69c0557e5b8cb9;hpb=4222434939b65c3abf144866564732d7fd14ed13 diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index dd815c445..39006ab2f 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -196,7 +196,13 @@ int kernel_create_event(struct lttng_event *ev, ret = kernctl_create_event(channel->fd, event->event); if (ret < 0) { - if (errno != EEXIST) { + switch (errno) { + case EEXIST: + break; + case ENOSYS: + WARN("Event type not implemented"); + break; + default: PERROR("create event ioctl"); } ret = -errno; @@ -597,24 +603,35 @@ ssize_t kernel_list_events(int tracer_fd, struct lttng_event **events) */ nbmem = KERNEL_EVENT_INIT_LIST_SIZE; elist = zmalloc(sizeof(struct lttng_event) * nbmem); + if (elist == NULL) { + PERROR("alloc list events"); + count = -ENOMEM; + goto end; + } while ((size = fscanf(fp, "event { name = %m[^;]; };%n\n", &event, &pos)) == 1) { if (count >= nbmem) { + struct lttng_event *new_elist; + DBG("Reallocating event list from %zu to %zu bytes", nbmem, nbmem * 2); /* Double the size */ nbmem <<= 1; - elist = realloc(elist, nbmem * sizeof(struct lttng_event)); - if (elist == NULL) { + new_elist = realloc(elist, nbmem * sizeof(struct lttng_event)); + if (new_elist == NULL) { PERROR("realloc list events"); + free(event); + free(elist); count = -ENOMEM; goto end; } + elist = new_elist; } strncpy(elist[count].name, event, LTTNG_SYMBOL_NAME_LEN); elist[count].name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0'; elist[count].enabled = -1; count++; + free(event); } *events = elist;