|
60 | 60 | #define BPF_FS_MAGIC 0xcafe4a11 |
61 | 61 | #endif |
62 | 62 |
|
| 63 | +#define MAX_EVENT_NAME_LEN 64 |
| 64 | + |
63 | 65 | #define BPF_FS_DEFAULT_PATH "/sys/fs/bpf" |
64 | 66 |
|
65 | 67 | #define BPF_INSN_SZ (sizeof(struct bpf_insn)) |
@@ -11039,16 +11041,16 @@ static const char *tracefs_available_filter_functions_addrs(void) |
11039 | 11041 | : TRACEFS"/available_filter_functions_addrs"; |
11040 | 11042 | } |
11041 | 11043 |
|
11042 | | -static void gen_kprobe_legacy_event_name(char *buf, size_t buf_sz, |
11043 | | - const char *kfunc_name, size_t offset) |
| 11044 | +static void gen_probe_legacy_event_name(char *buf, size_t buf_sz, |
| 11045 | + const char *name, size_t offset) |
11044 | 11046 | { |
11045 | 11047 | static int index = 0; |
11046 | 11048 | int i; |
11047 | 11049 |
|
11048 | | - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx_%d", getpid(), kfunc_name, offset, |
11049 | | - __sync_fetch_and_add(&index, 1)); |
| 11050 | + snprintf(buf, buf_sz, "libbpf_%u_%d_%s_0x%zx", getpid(), |
| 11051 | + __sync_fetch_and_add(&index, 1), name, offset); |
11050 | 11052 |
|
11051 | | - /* sanitize binary_path in the probe name */ |
| 11053 | + /* sanitize name in the probe name */ |
11052 | 11054 | for (i = 0; buf[i]; i++) { |
11053 | 11055 | if (!isalnum(buf[i])) |
11054 | 11056 | buf[i] = '_'; |
@@ -11174,9 +11176,9 @@ int probe_kern_syscall_wrapper(int token_fd) |
11174 | 11176 |
|
11175 | 11177 | return pfd >= 0 ? 1 : 0; |
11176 | 11178 | } else { /* legacy mode */ |
11177 | | - char probe_name[128]; |
| 11179 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11178 | 11180 |
|
11179 | | - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
| 11181 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
11180 | 11182 | if (add_kprobe_event_legacy(probe_name, false, syscall_name, 0) < 0) |
11181 | 11183 | return 0; |
11182 | 11184 |
|
@@ -11233,10 +11235,10 @@ bpf_program__attach_kprobe_opts(const struct bpf_program *prog, |
11233 | 11235 | func_name, offset, |
11234 | 11236 | -1 /* pid */, 0 /* ref_ctr_off */); |
11235 | 11237 | } else { |
11236 | | - char probe_name[256]; |
| 11238 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11237 | 11239 |
|
11238 | | - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), |
11239 | | - func_name, offset); |
| 11240 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 11241 | + func_name, offset); |
11240 | 11242 |
|
11241 | 11243 | legacy_probe = strdup(probe_name); |
11242 | 11244 | if (!legacy_probe) |
@@ -11744,20 +11746,6 @@ static int attach_uprobe_multi(const struct bpf_program *prog, long cookie, stru |
11744 | 11746 | return ret; |
11745 | 11747 | } |
11746 | 11748 |
|
11747 | | -static void gen_uprobe_legacy_event_name(char *buf, size_t buf_sz, |
11748 | | - const char *binary_path, uint64_t offset) |
11749 | | -{ |
11750 | | - int i; |
11751 | | - |
11752 | | - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx", getpid(), binary_path, (size_t)offset); |
11753 | | - |
11754 | | - /* sanitize binary_path in the probe name */ |
11755 | | - for (i = 0; buf[i]; i++) { |
11756 | | - if (!isalnum(buf[i])) |
11757 | | - buf[i] = '_'; |
11758 | | - } |
11759 | | -} |
11760 | | - |
11761 | 11749 | static inline int add_uprobe_event_legacy(const char *probe_name, bool retprobe, |
11762 | 11750 | const char *binary_path, size_t offset) |
11763 | 11751 | { |
@@ -12173,13 +12161,14 @@ bpf_program__attach_uprobe_opts(const struct bpf_program *prog, pid_t pid, |
12173 | 12161 | pfd = perf_event_open_probe(true /* uprobe */, retprobe, binary_path, |
12174 | 12162 | func_offset, pid, ref_ctr_off); |
12175 | 12163 | } else { |
12176 | | - char probe_name[PATH_MAX + 64]; |
| 12164 | + char probe_name[MAX_EVENT_NAME_LEN]; |
12177 | 12165 |
|
12178 | 12166 | if (ref_ctr_off) |
12179 | 12167 | return libbpf_err_ptr(-EINVAL); |
12180 | 12168 |
|
12181 | | - gen_uprobe_legacy_event_name(probe_name, sizeof(probe_name), |
12182 | | - binary_path, func_offset); |
| 12169 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 12170 | + strrchr(binary_path, '/') ? : binary_path, |
| 12171 | + func_offset); |
12183 | 12172 |
|
12184 | 12173 | legacy_probe = strdup(probe_name); |
12185 | 12174 | if (!legacy_probe) |
|
0 commit comments