| 
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