|
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