- case LTTNG_KERNEL_UPROBE:
- module_put(event_notifier->desc->owner);
- lttng_uprobes_destroy_event_notifier_private(event_notifier);
+ }
+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
+ {
+ struct lttng_kernel_event_notifier *event_notifier =
+ container_of(event, struct lttng_kernel_event_notifier, parent);
+
+ switch (event_notifier->priv->parent.instrumentation) {
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
+ lttng_event_desc_put(event_notifier->priv->parent.desc);
+ break;
+
+ case LTTNG_KERNEL_ABI_KPROBE:
+ module_put(event_notifier->priv->parent.desc->owner);
+ lttng_kprobes_destroy_event_notifier_private(event_notifier);
+ break;
+
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ break;
+
+ case LTTNG_KERNEL_ABI_UPROBE:
+ module_put(event_notifier->priv->parent.desc->owner);
+ lttng_uprobes_destroy_event_notifier_private(event_notifier);
+ break;
+
+ case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+ case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+ case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
+ default:
+ WARN_ON_ONCE(1);
+ }
+ list_del(&event_notifier->priv->node);
+ kmem_cache_free(event_notifier_private_cache, event_notifier->priv);
+ kmem_cache_free(event_notifier_cache, event_notifier);