Fix: use vmalloc for filter bytecode allocation
[lttng-modules.git] / src / lttng-events.c
index c8cf7621a95c35eb70bbc9f99f195fa38d7de264..9b78ac56f5d43b0fcae0e3d60a38c18965419d04 100644 (file)
@@ -36,6 +36,7 @@
 #include <wrapper/types.h>
 #include <lttng/kernel-version.h>
 #include <lttng/events.h>
+#include <lttng/lttng-bytecode.h>
 #include <lttng/tracer.h>
 #include <lttng/event-notifier-notification.h>
 #include <lttng/abi-old.h>
@@ -2031,7 +2032,7 @@ int lttng_event_enabler_ref_events(struct lttng_event_enabler *event_enabler)
                lttng_enabler_link_bytecode(event->desc,
                        lttng_static_ctx,
                        &event->filter_bytecode_runtime_head,
-                       lttng_event_enabler_as_enabler(event_enabler));
+                       &lttng_event_enabler_as_enabler(event_enabler)->filter_bytecode_head);
 
                /* TODO: merge event context. */
        }
@@ -2118,7 +2119,7 @@ int lttng_event_notifier_enabler_ref_event_notifiers(
                 */
                lttng_enabler_link_bytecode(event_notifier->desc,
                        lttng_static_ctx, &event_notifier->filter_bytecode_runtime_head,
-                       lttng_event_notifier_enabler_as_enabler(event_notifier_enabler));
+                       &lttng_event_notifier_enabler_as_enabler(event_notifier_enabler)->filter_bytecode_head);
        }
        return 0;
 }
@@ -2224,7 +2225,7 @@ int lttng_enabler_attach_filter_bytecode(struct lttng_enabler *enabler,
        ret = get_user(bytecode_len, &bytecode->len);
        if (ret)
                return ret;
-       bytecode_node = kzalloc(sizeof(*bytecode_node) + bytecode_len,
+       bytecode_node = lttng_kvzalloc(sizeof(*bytecode_node) + bytecode_len,
                        GFP_KERNEL);
        if (!bytecode_node)
                return -ENOMEM;
@@ -2242,7 +2243,7 @@ int lttng_enabler_attach_filter_bytecode(struct lttng_enabler *enabler,
        return 0;
 
 error_free:
-       kfree(bytecode_node);
+       lttng_kvfree(bytecode_node);
        return ret;
 }
 
@@ -2288,7 +2289,7 @@ void lttng_enabler_destroy(struct lttng_enabler *enabler)
        /* Destroy filter bytecode */
        list_for_each_entry_safe(filter_node, tmp_filter_node,
                        &enabler->filter_bytecode_head, node) {
-               kfree(filter_node);
+               lttng_kvfree(filter_node);
        }
 }
 
@@ -2480,7 +2481,7 @@ void lttng_session_sync_event_enablers(struct lttng_session *session)
                /* Enable filters */
                list_for_each_entry(runtime,
                                &event->filter_bytecode_runtime_head, node)
-                       lttng_filter_sync_state(runtime);
+                       lttng_bytecode_filter_sync_state(runtime);
        }
 }
 
@@ -2563,7 +2564,7 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group
                /* Enable filters */
                list_for_each_entry(runtime,
                                &event_notifier->filter_bytecode_runtime_head, node)
-                               lttng_filter_sync_state(runtime);
+                       lttng_bytecode_filter_sync_state(runtime);
        }
 }
 
This page took 0.025118 seconds and 4 git commands to generate.