X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt-events.c;h=c64c20368aa6ec07b4afa6a8b08e9a27ba5ad6af;hb=259b6cb38d19bbe9c039728459bc25acc0f6f8a0;hp=f9688f549be3bee9f105dd87b29130ef2839431d;hpb=e6a17f26e9b344e9d2349a81f9dcee09e96593d6;p=lttng-modules.git diff --git a/ltt-events.c b/ltt-events.c index f9688f54..c64c2036 100644 --- a/ltt-events.c +++ b/ltt-events.c @@ -266,7 +266,8 @@ void _ltt_channel_destroy(struct ltt_channel *chan) */ struct ltt_event *ltt_event_create(struct ltt_channel *chan, struct lttng_kernel_event *event_param, - void *filter) + void *filter, + const struct lttng_event_desc *internal_desc) { struct ltt_event *event; int ret; @@ -366,6 +367,9 @@ struct ltt_event *ltt_event_create(struct ltt_channel *chan, WARN_ON_ONCE(!ret); break; case LTTNG_KERNEL_NOOP: + event->desc = internal_desc; + if (!event->desc) + goto register_error; break; default: WARN_ON_ONCE(1); @@ -378,10 +382,7 @@ struct ltt_event *ltt_event_create(struct ltt_channel *chan, return event; statedump_error: - WARN_ON_ONCE(tracepoint_probe_unregister(event_param->name, - event->desc->probe_callback, - event)); - ltt_event_put(event->desc); + /* If a statedump error occurs, events will not be readable. */ register_error: kmem_cache_free(event_cache, event); cache_error: @@ -418,6 +419,9 @@ int _ltt_event_unregister(struct ltt_event *event) lttng_ftrace_unregister(event); ret = 0; break; + case LTTNG_KERNEL_NOOP: + ret = 0; + break; default: WARN_ON_ONCE(1); } @@ -446,6 +450,8 @@ void _ltt_event_destroy(struct ltt_event *event) module_put(event->desc->owner); lttng_ftrace_destroy_private(event); break; + case LTTNG_KERNEL_NOOP: + break; default: WARN_ON_ONCE(1); }