diff options
| author | Qiang Wang <[email protected]> | 2021-12-27 13:07:13 +0000 |
|---|---|---|
| committer | Andrii Nakryiko <[email protected]> | 2022-01-05 23:38:21 +0000 |
| commit | 51a33c60f1c22c0d2dafad774315ba1537765442 (patch) | |
| tree | e0db3dd9af7a9781ada553e46fc718f8c2b6f9e4 /tools/lib/bpf/libbpf.c | |
| parent | libbpf: Use probe_name for legacy kprobe (diff) | |
| download | kernel-51a33c60f1c22c0d2dafad774315ba1537765442.tar.gz kernel-51a33c60f1c22c0d2dafad774315ba1537765442.zip | |
libbpf: Support repeated legacy kprobes on same function
If repeated legacy kprobes on same function in one process,
libbpf will register using the same probe name and got -EBUSY
error. So append index to the probe name format to fix this
problem.
Co-developed-by: Chengming Zhou <[email protected]>
Signed-off-by: Qiang Wang <[email protected]>
Signed-off-by: Chengming Zhou <[email protected]>
Signed-off-by: Andrii Nakryiko <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'tools/lib/bpf/libbpf.c')
| -rw-r--r-- | tools/lib/bpf/libbpf.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 26e49e6aa5b1..7f10dd501a52 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -9916,7 +9916,10 @@ static int append_to_file(const char *file, const char *fmt, ...) static void gen_kprobe_legacy_event_name(char *buf, size_t buf_sz, const char *kfunc_name, size_t offset) { - snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx", getpid(), kfunc_name, offset); + static int index = 0; + + snprintf(buf, buf_sz, "libbpf_%u_%s_0x%zx_%d", getpid(), kfunc_name, offset, + __sync_fetch_and_add(&index, 1)); } static int add_kprobe_event_legacy(const char *probe_name, bool retprobe, |
