|
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))
|
@@ -11121,16 +11123,16 @@ static const char *tracefs_available_filter_functions_addrs(void)
|
11121 | 11123 | : TRACEFS"/available_filter_functions_addrs";
|
11122 | 11124 | }
|
11123 | 11125 |
|
11124 |
| -static void gen_kprobe_legacy_event_name(char *buf, size_t buf_sz, |
11125 |
| - const char *kfunc_name, size_t offset) |
| 11126 | +static void gen_probe_legacy_event_name(char *buf, size_t buf_sz, |
| 11127 | + const char *name, size_t offset) |
11126 | 11128 | {
|
11127 | 11129 | static int index = 0;
|
11128 | 11130 | int i;
|
11129 | 11131 |
|
11130 |
| - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx_%d", getpid(), kfunc_name, offset, |
11131 |
| - __sync_fetch_and_add(&index, 1)); |
| 11132 | + snprintf(buf, buf_sz, "libbpf_%u_%d_%s_0x%zx", getpid(), |
| 11133 | + __sync_fetch_and_add(&index, 1), name, offset); |
11132 | 11134 |
|
11133 |
| - /* sanitize binary_path in the probe name */ |
| 11135 | + /* sanitize name in the probe name */ |
11134 | 11136 | for (i = 0; buf[i]; i++) {
|
11135 | 11137 | if (!isalnum(buf[i]))
|
11136 | 11138 | buf[i] = '_';
|
@@ -11255,9 +11257,9 @@ int probe_kern_syscall_wrapper(int token_fd)
|
11255 | 11257 |
|
11256 | 11258 | return pfd >= 0 ? 1 : 0;
|
11257 | 11259 | } else { /* legacy mode */
|
11258 |
| - char probe_name[128]; |
| 11260 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11259 | 11261 |
|
11260 |
| - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
| 11262 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
11261 | 11263 | if (add_kprobe_event_legacy(probe_name, false, syscall_name, 0) < 0)
|
11262 | 11264 | return 0;
|
11263 | 11265 |
|
@@ -11313,10 +11315,10 @@ bpf_program__attach_kprobe_opts(const struct bpf_program *prog,
|
11313 | 11315 | func_name, offset,
|
11314 | 11316 | -1 /* pid */, 0 /* ref_ctr_off */);
|
11315 | 11317 | } else {
|
11316 |
| - char probe_name[256]; |
| 11318 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11317 | 11319 |
|
11318 |
| - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), |
11319 |
| - func_name, offset); |
| 11320 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 11321 | + func_name, offset); |
11320 | 11322 |
|
11321 | 11323 | legacy_probe = strdup(probe_name);
|
11322 | 11324 | if (!legacy_probe)
|
@@ -11860,20 +11862,6 @@ static int attach_uprobe_multi(const struct bpf_program *prog, long cookie, stru
|
11860 | 11862 | return ret;
|
11861 | 11863 | }
|
11862 | 11864 |
|
11863 |
| -static void gen_uprobe_legacy_event_name(char *buf, size_t buf_sz, |
11864 |
| - const char *binary_path, uint64_t offset) |
11865 |
| -{ |
11866 |
| - int i; |
11867 |
| - |
11868 |
| - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx", getpid(), binary_path, (size_t)offset); |
11869 |
| - |
11870 |
| - /* sanitize binary_path in the probe name */ |
11871 |
| - for (i = 0; buf[i]; i++) { |
11872 |
| - if (!isalnum(buf[i])) |
11873 |
| - buf[i] = '_'; |
11874 |
| - } |
11875 |
| -} |
11876 |
| - |
11877 | 11865 | static inline int add_uprobe_event_legacy(const char *probe_name, bool retprobe,
|
11878 | 11866 | const char *binary_path, size_t offset)
|
11879 | 11867 | {
|
@@ -12297,13 +12285,14 @@ bpf_program__attach_uprobe_opts(const struct bpf_program *prog, pid_t pid,
|
12297 | 12285 | pfd = perf_event_open_probe(true /* uprobe */, retprobe, binary_path,
|
12298 | 12286 | func_offset, pid, ref_ctr_off);
|
12299 | 12287 | } else {
|
12300 |
| - char probe_name[PATH_MAX + 64]; |
| 12288 | + char probe_name[MAX_EVENT_NAME_LEN]; |
12301 | 12289 |
|
12302 | 12290 | if (ref_ctr_off)
|
12303 | 12291 | return libbpf_err_ptr(-EINVAL);
|
12304 | 12292 |
|
12305 |
| - gen_uprobe_legacy_event_name(probe_name, sizeof(probe_name), |
12306 |
| - binary_path, func_offset); |
| 12293 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 12294 | + strrchr(binary_path, '/') ? : binary_path, |
| 12295 | + func_offset); |
12307 | 12296 |
|
12308 | 12297 | legacy_probe = strdup(probe_name);
|
12309 | 12298 | if (!legacy_probe)
|
|
0 commit comments