|
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)) |
@@ -11056,16 +11058,16 @@ static const char *tracefs_available_filter_functions_addrs(void) |
11056 | 11058 | : TRACEFS"/available_filter_functions_addrs"; |
11057 | 11059 | } |
11058 | 11060 |
|
11059 | | -static void gen_kprobe_legacy_event_name(char *buf, size_t buf_sz, |
11060 | | - const char *kfunc_name, size_t offset) |
| 11061 | +static void gen_probe_legacy_event_name(char *buf, size_t buf_sz, |
| 11062 | + const char *name, size_t offset) |
11061 | 11063 | { |
11062 | 11064 | static int index = 0; |
11063 | 11065 | int i; |
11064 | 11066 |
|
11065 | | - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx_%d", getpid(), kfunc_name, offset, |
11066 | | - __sync_fetch_and_add(&index, 1)); |
| 11067 | + snprintf(buf, buf_sz, "libbpf_%u_%d_%s_0x%zx", getpid(), |
| 11068 | + __sync_fetch_and_add(&index, 1), name, offset); |
11067 | 11069 |
|
11068 | | - /* sanitize binary_path in the probe name */ |
| 11070 | + /* sanitize name in the probe name */ |
11069 | 11071 | for (i = 0; buf[i]; i++) { |
11070 | 11072 | if (!isalnum(buf[i])) |
11071 | 11073 | buf[i] = '_'; |
@@ -11190,9 +11192,9 @@ int probe_kern_syscall_wrapper(int token_fd) |
11190 | 11192 |
|
11191 | 11193 | return pfd >= 0 ? 1 : 0; |
11192 | 11194 | } else { /* legacy mode */ |
11193 | | - char probe_name[128]; |
| 11195 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11194 | 11196 |
|
11195 | | - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
| 11197 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), syscall_name, 0); |
11196 | 11198 | if (add_kprobe_event_legacy(probe_name, false, syscall_name, 0) < 0) |
11197 | 11199 | return 0; |
11198 | 11200 |
|
@@ -11248,10 +11250,10 @@ bpf_program__attach_kprobe_opts(const struct bpf_program *prog, |
11248 | 11250 | func_name, offset, |
11249 | 11251 | -1 /* pid */, 0 /* ref_ctr_off */); |
11250 | 11252 | } else { |
11251 | | - char probe_name[256]; |
| 11253 | + char probe_name[MAX_EVENT_NAME_LEN]; |
11252 | 11254 |
|
11253 | | - gen_kprobe_legacy_event_name(probe_name, sizeof(probe_name), |
11254 | | - func_name, offset); |
| 11255 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 11256 | + func_name, offset); |
11255 | 11257 |
|
11256 | 11258 | legacy_probe = strdup(probe_name); |
11257 | 11259 | if (!legacy_probe) |
@@ -11795,20 +11797,6 @@ static int attach_uprobe_multi(const struct bpf_program *prog, long cookie, stru |
11795 | 11797 | return ret; |
11796 | 11798 | } |
11797 | 11799 |
|
11798 | | -static void gen_uprobe_legacy_event_name(char *buf, size_t buf_sz, |
11799 | | - const char *binary_path, uint64_t offset) |
11800 | | -{ |
11801 | | - int i; |
11802 | | - |
11803 | | - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx", getpid(), binary_path, (size_t)offset); |
11804 | | - |
11805 | | - /* sanitize binary_path in the probe name */ |
11806 | | - for (i = 0; buf[i]; i++) { |
11807 | | - if (!isalnum(buf[i])) |
11808 | | - buf[i] = '_'; |
11809 | | - } |
11810 | | -} |
11811 | | - |
11812 | 11800 | static inline int add_uprobe_event_legacy(const char *probe_name, bool retprobe, |
11813 | 11801 | const char *binary_path, size_t offset) |
11814 | 11802 | { |
@@ -12232,13 +12220,14 @@ bpf_program__attach_uprobe_opts(const struct bpf_program *prog, pid_t pid, |
12232 | 12220 | pfd = perf_event_open_probe(true /* uprobe */, retprobe, binary_path, |
12233 | 12221 | func_offset, pid, ref_ctr_off); |
12234 | 12222 | } else { |
12235 | | - char probe_name[PATH_MAX + 64]; |
| 12223 | + char probe_name[MAX_EVENT_NAME_LEN]; |
12236 | 12224 |
|
12237 | 12225 | if (ref_ctr_off) |
12238 | 12226 | return libbpf_err_ptr(-EINVAL); |
12239 | 12227 |
|
12240 | | - gen_uprobe_legacy_event_name(probe_name, sizeof(probe_name), |
12241 | | - binary_path, func_offset); |
| 12228 | + gen_probe_legacy_event_name(probe_name, sizeof(probe_name), |
| 12229 | + strrchr(binary_path, '/') ? : binary_path, |
| 12230 | + func_offset); |
12242 | 12231 |
|
12243 | 12232 | legacy_probe = strdup(probe_name); |
12244 | 12233 | if (!legacy_probe) |
|
0 commit comments