diff options
| -rw-r--r-- | include/linux/trace_events.h | 9 | ||||
| -rw-r--r-- | include/trace/trace_events.h | 24 | ||||
| -rw-r--r-- | kernel/trace/trace_events.c | 80 | ||||
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 17 |
4 files changed, 1 insertions, 129 deletions
diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index 5cbd09c8be8d..308c76b57d13 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -298,15 +298,6 @@ struct trace_event_class { struct list_head *(*get_fields)(struct trace_event_call *); struct list_head fields; int (*raw_init)(struct trace_event_call *); -#ifdef CONFIG_BPF_EVENTS - /* - * Per-template BTF ids set by DECLARE_EVENT_CLASS via BTF_ID() and - * patched by resolve_btfids at link time. NULL for handcrafted classes. - * [0] FUNC __bpf_trace_<template> - * [1] STRUCT trace_event_raw_<template> - */ - const u32 *btf_ids; -#endif }; extern int trace_event_reg(struct trace_event_call *event, diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h index 09ad57ac4b73..fbc07d353be6 100644 --- a/include/trace/trace_events.h +++ b/include/trace/trace_events.h @@ -19,7 +19,6 @@ */ #include <linux/trace_events.h> -#include <linux/btf_ids.h> #ifndef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR TRACE_SYSTEM @@ -398,27 +397,6 @@ static inline notrace int trace_event_get_offsets_##call( \ #define _TRACE_PERF_INIT(call) #endif /* CONFIG_PERF_EVENTS */ -#ifdef CONFIG_BPF_EVENTS -/* - * Per-template BTF id list, populated at link time by resolve_btfids: - * [0] FUNC __bpf_trace_<call> (the BPF dispatcher) - * [1] STRUCT trace_event_raw_<call> (the ring-buffer record) - * Exposed via the events/<sys>/<name>/btf_ids tracefs file. - */ -#define _TRACE_BTF_IDS_DECLARE(call) \ - extern u32 __bpf_trace_btf_ids_##call[]; \ - BTF_ID_LIST_GLOBAL(__bpf_trace_btf_ids_##call, 2) \ - BTF_ID(func, __bpf_trace_##call) \ - BTF_ID(struct, trace_event_raw_##call) - -#define _TRACE_BTF_IDS_INIT(call) \ - .btf_ids = __bpf_trace_btf_ids_##call, - -#else -#define _TRACE_BTF_IDS_DECLARE(call) -#define _TRACE_BTF_IDS_INIT(call) -#endif /* CONFIG_BPF_EVENTS */ - #include "stages/stage6_event_callback.h" @@ -496,7 +474,6 @@ static inline void ftrace_test_probe_##call(void) \ #undef DECLARE_EVENT_CLASS #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ _TRACE_PERF_PROTO(call, PARAMS(proto)); \ -_TRACE_BTF_IDS_DECLARE(call) \ static char print_fmt_##call[] = print; \ static struct trace_event_class __used __refdata event_class_##call = { \ .system = TRACE_SYSTEM_STRING, \ @@ -506,7 +483,6 @@ static struct trace_event_class __used __refdata event_class_##call = { \ .probe = trace_event_raw_event_##call, \ .reg = trace_event_reg, \ _TRACE_PERF_INIT(call) \ - _TRACE_BTF_IDS_INIT(call) \ }; #undef DECLARE_EVENT_SYSCALL_CLASS diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index d3ee45af15d4..3a6308a8376f 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -23,7 +23,6 @@ #include <linux/sort.h> #include <linux/slab.h> #include <linux/delay.h> -#include <linux/btf.h> #include <trace/events/sched.h> #include <trace/syscall.h> @@ -2227,61 +2226,6 @@ event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) } #endif -#ifdef CONFIG_BPF_EVENTS -static ssize_t -event_btf_ids_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) -{ - struct trace_event_file *file; - struct trace_event_call *call; - const struct btf_type *t; - struct module *mod = NULL; - u32 raw_id = 0, tp_id = 0, obj_id = 0; - const u32 *ids; - struct btf *btf; - char buf[128]; - int len; - - /* Module unload could free call->class and ids[] mid-read. */ - scoped_guard(mutex, &event_mutex) { - file = event_file_file(filp); - if (!file) - return -ENODEV; - - call = file->event_call; - ids = call->class->btf_ids; - if (!ids) - return -ENOENT; - if (!(call->flags & TRACE_EVENT_FL_DYNAMIC)) - mod = (struct module *)call->module; - - btf = btf_get_module_btf(mod); - if (IS_ERR_OR_NULL(btf)) - return -ENOENT; - - /* Module-local ids in ids[] need base+local relocation. */ - tp_id = btf_relocate_id(btf, ids[1]); - - /* - * Without FL_TRACEPOINT the dispatcher is shared (e.g. all - * per-syscall events fan out from __bpf_trace_sys_enter), so - * raw_btf_id has no per-event attach point — report 0. - */ - if (call->flags & TRACE_EVENT_FL_TRACEPOINT) { - t = btf_type_by_id(btf, btf_relocate_id(btf, ids[0])); - raw_id = t ? t->type : 0; - } - obj_id = btf_obj_id(btf); - btf_put(btf); - } - - len = scnprintf(buf, sizeof(buf), - "btf_obj_id: %u\nraw_btf_id: %u\ntp_btf_id: %u\n", - obj_id, raw_id, tp_id); - - return simple_read_from_buffer(ubuf, cnt, ppos, buf, len); -} -#endif - static ssize_t event_filter_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) @@ -2782,13 +2726,6 @@ static const struct file_operations ftrace_event_id_fops = { }; #endif -#ifdef CONFIG_BPF_EVENTS -static const struct file_operations ftrace_event_btf_ids_fops = { - .read = event_btf_ids_read, - .llseek = default_llseek, -}; -#endif - static const struct file_operations ftrace_event_filter_fops = { .open = tracing_open_file_tr, .read = event_filter_read, @@ -3182,14 +3119,6 @@ static int event_callback(const char *name, umode_t *mode, void **data, } #endif -#ifdef CONFIG_BPF_EVENTS - if (call->class->btf_ids && strcmp(name, "btf_ids") == 0) { - *mode = TRACE_MODE_READ; - *fops = &ftrace_event_btf_ids_fops; - return 1; - } -#endif - #ifdef CONFIG_HIST_TRIGGERS if (strcmp(name, "hist") == 0) { *mode = TRACE_MODE_READ; @@ -3244,14 +3173,7 @@ event_create_dir(struct eventfs_inode *parent, struct trace_event_file *file) .callback = event_callback, }, #endif -#ifdef CONFIG_BPF_EVENTS - { - .name = "btf_ids", - .callback = event_callback, - }, -#endif -#define NR_RO_EVENT_ENTRIES (1 + IS_ENABLED(CONFIG_PERF_EVENTS) + \ - IS_ENABLED(CONFIG_BPF_EVENTS)) +#define NR_RO_EVENT_ENTRIES (1 + IS_ENABLED(CONFIG_PERF_EVENTS)) /* Readonly files must be above this line and counted by NR_RO_EVENT_ENTRIES. */ { .name = "enable", diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 48ef1a93e576..8a4f3c75e39f 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c @@ -1303,26 +1303,12 @@ struct trace_event_functions exit_syscall_print_funcs = { .trace = print_syscall_exit, }; -#ifdef CONFIG_BPF_EVENTS -/* - * BTF id lists generated by DECLARE_EVENT_CLASS for the sys_enter and - * sys_exit tracepoints. The auto-generated event_class_sys_{enter,exit} - * is unused (per-syscall events share the handcrafted classes below), - * but the id lists themselves are global and reusable. - */ -extern u32 __bpf_trace_btf_ids_sys_enter[]; -extern u32 __bpf_trace_btf_ids_sys_exit[]; -#endif - struct trace_event_class __refdata event_class_syscall_enter = { .system = "syscalls", .reg = syscall_enter_register, .fields_array = syscall_enter_fields_array, .get_fields = syscall_get_enter_fields, .raw_init = init_syscall_trace, -#ifdef CONFIG_BPF_EVENTS - .btf_ids = __bpf_trace_btf_ids_sys_enter, -#endif }; struct trace_event_class __refdata event_class_syscall_exit = { @@ -1335,9 +1321,6 @@ struct trace_event_class __refdata event_class_syscall_exit = { }, .fields = LIST_HEAD_INIT(event_class_syscall_exit.fields), .raw_init = init_syscall_trace, -#ifdef CONFIG_BPF_EVENTS - .btf_ids = __bpf_trace_btf_ids_sys_exit, -#endif }; unsigned long __init __weak arch_syscall_addr(int nr) |
