]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bpf: Add missed value to kprobe_multi link info
authorJiri Olsa <jolsa@kernel.org>
Wed, 20 Sep 2023 21:31:38 +0000 (23:31 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 25 Sep 2023 23:37:44 +0000 (16:37 -0700)
Add missed value to kprobe_multi link info to hold the stats of missed
kprobe_multi probe.

The missed counter gets incremented when fprobe fails the recursion
check or there's no rethook available for return probe. In either
case the attached bpf program is not executed.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Tested-by: Song Liu <song@kernel.org>
Reviewed-by: Song Liu <song@kernel.org>
Acked-by: Hou Tao <houtao1@huawei.com>
Link: https://lore.kernel.org/bpf/20230920213145.1941596-3-jolsa@kernel.org
include/uapi/linux/bpf.h
kernel/trace/bpf_trace.c
tools/include/uapi/linux/bpf.h

index 5f13db15a3c70d331d0b61ff12b8e3d8ab78f523..1da5b1bcce710e6cf585da2bb736f92a8ddb0668 100644 (file)
@@ -6532,6 +6532,7 @@ struct bpf_link_info {
                        __aligned_u64 addrs;
                        __u32 count; /* in/out: kprobe_multi function count */
                        __u32 flags;
+                       __u64 missed;
                } kprobe_multi;
                struct {
                        __u32 type; /* enum bpf_perf_event_type */
index 54827d04c9a67394e3f69d1bd182357a97c3cd3b..6aec6e7d612ab5859c0d7ef11adb2cf2c8c36462 100644 (file)
@@ -2614,6 +2614,7 @@ static int bpf_kprobe_multi_link_fill_link_info(const struct bpf_link *link,
        kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link);
        info->kprobe_multi.count = kmulti_link->cnt;
        info->kprobe_multi.flags = kmulti_link->flags;
+       info->kprobe_multi.missed = kmulti_link->fp.nmissed;
 
        if (!uaddrs)
                return 0;
index 5f13db15a3c70d331d0b61ff12b8e3d8ab78f523..1da5b1bcce710e6cf585da2bb736f92a8ddb0668 100644 (file)
@@ -6532,6 +6532,7 @@ struct bpf_link_info {
                        __aligned_u64 addrs;
                        __u32 count; /* in/out: kprobe_multi function count */
                        __u32 flags;
+                       __u64 missed;
                } kprobe_multi;
                struct {
                        __u32 type; /* enum bpf_perf_event_type */