|
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))
|
@@ -11136,16 +11138,16 @@ static const char *tracefs_available_filter_functions_addrs(void)
|
11136 | 11138 | : TRACEFS"/available_filter_functions_addrs";
|
11137 | 11139 | }
|
11138 | 11140 |
|
11139 |
| -static void gen_kprobe_legacy_event_name(char *buf, size_t buf_sz, |
11140 |
| - const char *kfunc_name, size_t offset) |
| 11141 | +static void gen_probe_legacy_event_name(char *buf, size_t buf_sz, |
| 11142 | + const char *name, size_t offset) |
11141 | 11143 | {
|
11142 | 11144 | static int index = 0;
|
11143 | 11145 | int i;
|
11144 | 11146 |
|
11145 |
| - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx_%d", getpid(), kfunc_name, offset, |
11146 |
| - __sync_fetch_and_add(&index, 1)); |
| 11147 | + snprintf(buf, buf_sz, "libbpf_%u_%d_%s_0x%zx", getpid(), |
| 11148 | + __sync_fetch_and_add(&index, 1), name, offset); |
11147 | 11149 |
|
11148 |
| - /* sanitize binary_path in the probe name */ |
| 11150 | + /* sanitize name in the probe name */ |
11149 | 11151 | for (i = 0; buf[i]; i++) {
|
11150 | 11152 | if (!isalnum(buf[i]))
|
11151 | 11153 | buf[i] = '_';
|
@@ -11270,9 +11272,9 @@ int probe_kern_syscall_wrapper(int token_fd)
|
11270 | 11272 |
|
11271 | 11273 | return pfd >= 0 ? 1 : 0;
|
11272 | 11274 | } else { /* legacy mode */
|
11273 |
| - char probe_name[128]; |
| 11275 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11274 | 11276 |
|
11275 |
| - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
| 11277 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
11276 | 11278 | if (add_kprobe_event_legacy(probe_name, false, syscall_name, 0) < 0)
|
11277 | 11279 | return 0;
|
11278 | 11280 |
|
@@ -11328,10 +11330,10 @@ bpf_program__attach_kprobe_opts(const struct bpf_program *prog,
|
11328 | 11330 | func_name, offset,
|
11329 | 11331 | -1 /* pid */, 0 /* ref_ctr_off */);
|
11330 | 11332 | } else {
|
11331 |
| - char probe_name[256]; |
| 11333 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11332 | 11334 |
|
11333 |
| - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), |
11334 |
| - func_name, offset); |
| 11335 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 11336 | + func_name, offset); |
11335 | 11337 |
|
11336 | 11338 | legacy_probe = strdup(probe_name);
|
11337 | 11339 | if (!legacy_probe)
|
@@ -11875,20 +11877,6 @@ static int attach_uprobe_multi(const struct bpf_program *prog, long cookie, stru
|
11875 | 11877 | return ret;
|
11876 | 11878 | }
|
11877 | 11879 |
|
11878 |
| -static void gen_uprobe_legacy_event_name(char *buf, size_t buf_sz, |
11879 |
| - const char *binary_path, uint64_t offset) |
11880 |
| -{ |
11881 |
| - int i; |
11882 |
| - |
11883 |
| - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx", getpid(), binary_path, (size_t)offset); |
11884 |
| - |
11885 |
| - /* sanitize binary_path in the probe name */ |
11886 |
| - for (i = 0; buf[i]; i++) { |
11887 |
| - if (!isalnum(buf[i])) |
11888 |
| - buf[i] = '_'; |
11889 |
| - } |
11890 |
| -} |
11891 |
| - |
11892 | 11880 | static inline int add_uprobe_event_legacy(const char *probe_name, bool retprobe,
|
11893 | 11881 | const char *binary_path, size_t offset)
|
11894 | 11882 | {
|
@@ -12312,13 +12300,14 @@ bpf_program__attach_uprobe_opts(const struct bpf_program *prog, pid_t pid,
|
12312 | 12300 | pfd = perf_event_open_probe(true /* uprobe */, retprobe, binary_path,
|
12313 | 12301 | func_offset, pid, ref_ctr_off);
|
12314 | 12302 | } else {
|
12315 |
| - char probe_name[PATH_MAX + 64]; |
| 12303 | + char probe_name[MAX_EVENT_NAME_LEN]; |
12316 | 12304 |
|
12317 | 12305 | if (ref_ctr_off)
|
12318 | 12306 | return libbpf_err_ptr(-EINVAL);
|
12319 | 12307 |
|
12320 |
| - gen_uprobe_legacy_event_name(probe_name, sizeof(probe_name), |
12321 |
| - binary_path, func_offset); |
| 12308 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 12309 | + strrchr(binary_path, '/') ? : binary_path, |
| 12310 | + func_offset); |
12322 | 12311 |
|
12323 | 12312 | legacy_probe = strdup(probe_name);
|
12324 | 12313 | if (!legacy_probe)
|
|
0 commit comments