| 
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