Record event as soon as one filter evaluates to TRUE
[lttng-modules.git] / probes / lttng-tracepoint-event-impl.h
index 39454fb3d9c13d68fc4648aa135a1aacd224bb80..34561243b01502b79db9db6892c2add87f38047c 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/rculist.h>
 #include <asm/byteorder.h>
 #include <linux/swab.h>
-#include <linux/uidgid.h>
 
 #include <probes/lttng.h>
 #include <probes/lttng-types.h>
@@ -20,6 +19,7 @@
 #include <wrapper/ringbuffer/frontend_types.h>
 #include <wrapper/ringbuffer/backend.h>
 #include <wrapper/rcu.h>
+#include <wrapper/user_namespace.h>
 #include <lttng-events.h>
 #include <lttng-tracer-core.h>
 #include <lttng-tp-mempool.h>
@@ -1146,19 +1146,19 @@ static void __event_probe__##_name(void *__data, _proto)                      \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->uid_tracker.p);               \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kuid(&init_user_ns, current_uid()))))            \
+                       lttng_current_uid())))                                \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->vuid_tracker.p);              \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kuid(current_user_ns(), current_uid()))))        \
+                       lttng_current_vuid())))                               \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->gid_tracker.p);               \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kgid(&init_user_ns, current_gid()))))            \
+                       lttng_current_gid())))                                \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->vgid_tracker.p);              \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kgid(current_user_ns(), current_gid()))))        \
+                       lttng_current_vgid())))                               \
                return;                                                       \
        __orig_dynamic_len_offset = this_cpu_ptr(&lttng_dynamic_len_stack)->offset; \
        __dynamic_len_idx = __orig_dynamic_len_offset;                        \
@@ -1171,8 +1171,10 @@ static void __event_probe__##_name(void *__data, _proto)               \
                                tp_locvar, _args);                                    \
                lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \
                        if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx,       \
-                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
+                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
                                __filter_record = 1;                          \
+                               break;                                        \
+                       }                                                     \
                }                                                             \
                if (likely(!__filter_record))                                 \
                        goto __post;                                          \
@@ -1239,19 +1241,19 @@ static void __event_probe__##_name(void *__data)                              \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->uid_tracker.p);               \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kuid(&init_user_ns, current_uid()))))            \
+                       lttng_current_uid())))                                \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->vuid_tracker.p);              \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kuid(current_user_ns(), current_uid()))))        \
+                       lttng_current_vuid())))                               \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->gid_tracker.p);               \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kgid(&init_user_ns, current_gid()))))            \
+                       lttng_current_gid())))                                \
                return;                                                       \
        __lf = lttng_rcu_dereference(__session->vgid_tracker.p);              \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
-                       from_kgid(current_user_ns(), current_gid()))))        \
+                       lttng_current_vgid())))                               \
                return;                                                       \
        __orig_dynamic_len_offset = this_cpu_ptr(&lttng_dynamic_len_stack)->offset; \
        __dynamic_len_idx = __orig_dynamic_len_offset;                        \
@@ -1264,8 +1266,10 @@ static void __event_probe__##_name(void *__data)                       \
                                tp_locvar);                                   \
                lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \
                        if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx, \
-                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
+                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
                                __filter_record = 1;                          \
+                               break;                                        \
+                       }                                                     \
                }                                                             \
                if (likely(!__filter_record))                                 \
                        goto __post;                                          \
This page took 0.024206 seconds and 4 git commands to generate.