From: Michael Jeanson Date: Fri, 18 Nov 2022 21:42:38 +0000 (-0500) Subject: Drop support for kernels < 4.4 from 'wrapper/tracepoint.h' X-Git-Url: http://git.liburcu.org/?p=lttng-modules.git;a=commitdiff_plain;h=a6837bed45b070b8a90292f92e3adc81c974e324 Drop support for kernels < 4.4 from 'wrapper/tracepoint.h' Change-Id: Icab9656bc3d9d22d9887191af2f7f465323c5c2a Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- diff --git a/include/wrapper/tracepoint.h b/include/wrapper/tracepoint.h index 10c9fce6..7ed1069d 100644 --- a/include/wrapper/tracepoint.h +++ b/include/wrapper/tracepoint.h @@ -11,6 +11,7 @@ #define _LTTNG_WRAPPER_TRACEPOINT_H #include +#include #include #include @@ -22,97 +23,6 @@ DEFINE_TRACE(name) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) - -#include - -#define lttng_wrapper_tracepoint_probe_register lttng_tracepoint_probe_register -#define lttng_wrapper_tracepoint_probe_unregister lttng_tracepoint_probe_unregister - -#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */ - -#define lttng_wrapper_tracepoint_probe_register tracepoint_probe_register -#define lttng_wrapper_tracepoint_probe_unregister tracepoint_probe_unregister - -static inline -int lttng_tracepoint_init(void) -{ - return 0; -} - -static inline -void lttng_tracepoint_exit(void) -{ -} - -#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */ - -#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,15,0) && defined(CONFIG_MODULE_SIG)) - -#include -#include - -static inline -int wrapper_tracepoint_module_notify(struct notifier_block *nb, - unsigned long val, struct module *mod) -{ - int (*tracepoint_module_notify_sym)(struct notifier_block *nb, - unsigned long val, struct module *mod); - - tracepoint_module_notify_sym = - (void *) kallsyms_lookup_funcptr("tracepoint_module_notify"); - if (tracepoint_module_notify_sym) { - return tracepoint_module_notify_sym(nb, val, mod); - } else { - printk_once(KERN_WARNING "LTTng: tracepoint_module_notify symbol lookup failed. It probably means you kernel don't need this work-around. Please consider upgrading LTTng modules to make this warning go away.\n"); - return -ENOSYS; - } -} - -/* - * No canary for 'tracepoint_module_notify()', it's only defined in 'kernel/tracepoint.c'. - * - * static inline - * int __canary__tracepoint_module_notify(struct notifier_block *nb, - * unsigned long val, struct module *mod) - * { - * return tracepoint_module_notify(nb, val, mod); - * } - */ - -#endif /* #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,15,0) && defined(CONFIG_MODULE_SIG)) */ - -#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,15,0) && defined(CONFIG_MODULE_SIG) && defined(MODULE)) - -static inline -int wrapper_lttng_fixup_sig(struct module *mod) -{ - int ret = 0; - - /* - * This is for module.c confusing force loaded modules with - * unsigned modules. - */ - if (!THIS_MODULE->sig_ok && - THIS_MODULE->taints & (1U << TAINT_FORCED_MODULE)) { - THIS_MODULE->taints &= ~(1U << TAINT_FORCED_MODULE); - ret = wrapper_tracepoint_module_notify(NULL, - MODULE_STATE_COMING, mod); - THIS_MODULE->taints |= (1U << TAINT_FORCED_MODULE); - } - return ret; -} - -#else /* #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,15,0) && defined(CONFIG_MODULE_SIG) && defined(MODULE)) */ - -static inline -int wrapper_lttng_fixup_sig(struct module *mod) -{ - return 0; -} - -#endif /* #else #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,15,0) && defined(CONFIG_MODULE_SIG) && defined(MODULE)) */ - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,19,0)) static inline struct tracepoint *lttng_tracepoint_ptr_deref(tracepoint_ptr_t *p) { diff --git a/src/lttng-events.c b/src/lttng-events.c index 9df03392..827c9d4c 100644 --- a/src/lttng-events.c +++ b/src/lttng-events.c @@ -1345,7 +1345,7 @@ void register_event(struct lttng_kernel_event_common *event) desc = event->priv->desc; switch (event->priv->instrumentation) { case LTTNG_KERNEL_ABI_TRACEPOINT: - ret = lttng_wrapper_tracepoint_probe_register(desc->event_kname, + ret = lttng_tracepoint_probe_register(desc->event_kname, desc->tp_class->probe_callback, event); break; @@ -1395,7 +1395,7 @@ void unregister_event(struct lttng_kernel_event_common *event) desc = event_priv->desc; switch (event_priv->instrumentation) { case LTTNG_KERNEL_ABI_TRACEPOINT: - ret = lttng_wrapper_tracepoint_probe_unregister(event_priv->desc->event_kname, + ret = lttng_tracepoint_probe_unregister(event_priv->desc->event_kname, event_priv->desc->tp_class->probe_callback, event); break; @@ -4152,9 +4152,6 @@ static int __init lttng_events_init(void) { int ret; - ret = wrapper_lttng_fixup_sig(THIS_MODULE); - if (ret) - return ret; ret = wrapper_get_pfnblock_flags_mask_init(); if (ret) return ret; diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c index 9d708af9..0593f4c8 100644 --- a/src/lttng-statedump-impl.c +++ b/src/lttng-statedump-impl.c @@ -805,13 +805,6 @@ EXPORT_SYMBOL_GPL(lttng_statedump_start); static int __init lttng_statedump_init(void) { - /* - * Allow module to load even if the fixup cannot be done. This - * will allow seemless transition when the underlying issue fix - * is merged into the Linux kernel, and when tracepoint.c - * "tracepoint_module_notify" is turned into a static function. - */ - (void) wrapper_lttng_fixup_sig(THIS_MODULE); return 0; } diff --git a/src/lttng-syscalls.c b/src/lttng-syscalls.c index d93df2e1..2fb6eda3 100644 --- a/src/lttng-syscalls.c +++ b/src/lttng-syscalls.c @@ -796,17 +796,17 @@ int lttng_event_enabler_create_syscall_events_if_missing(struct lttng_event_enab } if (!syscall_table->sys_enter_registered) { - ret = lttng_wrapper_tracepoint_probe_register("sys_enter", + ret = lttng_tracepoint_probe_register("sys_enter", (void *) syscall_entry_event_probe, syscall_table); if (ret) return ret; syscall_table->sys_enter_registered = 1; } if (!syscall_table->sys_exit_registered) { - ret = lttng_wrapper_tracepoint_probe_register("sys_exit", + ret = lttng_tracepoint_probe_register("sys_exit", (void *) syscall_exit_event_probe, syscall_table); if (ret) { - WARN_ON_ONCE(lttng_wrapper_tracepoint_probe_unregister("sys_enter", + WARN_ON_ONCE(lttng_tracepoint_probe_unregister("sys_enter", (void *) syscall_entry_event_probe, syscall_table)); return ret; } @@ -825,14 +825,14 @@ int lttng_syscalls_unregister_syscall_table(struct lttng_kernel_syscall_table *s if (!syscall_table->syscall_dispatch) return 0; if (syscall_table->sys_enter_registered) { - ret = lttng_wrapper_tracepoint_probe_unregister("sys_enter", + ret = lttng_tracepoint_probe_unregister("sys_enter", (void *) syscall_entry_event_probe, syscall_table); if (ret) return ret; syscall_table->sys_enter_registered = 0; } if (syscall_table->sys_exit_registered) { - ret = lttng_wrapper_tracepoint_probe_unregister("sys_exit", + ret = lttng_tracepoint_probe_unregister("sys_exit", (void *) syscall_exit_event_probe, syscall_table); if (ret) return ret; diff --git a/src/tests/probes/lttng-test.c b/src/tests/probes/lttng-test.c index 86007e5e..b18e5faf 100644 --- a/src/tests/probes/lttng-test.c +++ b/src/tests/probes/lttng-test.c @@ -101,7 +101,6 @@ int __init lttng_test_init(void) { int ret = 0; - (void) wrapper_lttng_fixup_sig(THIS_MODULE); wrapper_vmalloc_sync_mappings(); lttng_test_filter_event_dentry = proc_create_data(LTTNG_TEST_FILTER_EVENT_FILE,