]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
libbpf: add support for sleepable uprobe programs
authorDelyan Kratunov <delyank@fb.com>
Tue, 14 Jun 2022 23:10:47 +0000 (23:10 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 17 Jun 2022 02:27:30 +0000 (19:27 -0700)
Add section mappings for u(ret)probe.s programs.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Delyan Kratunov <delyank@fb.com>
Link: https://lore.kernel.org/r/aedbc3b74f3523f00010a7b0df8f3388cca59f16.1655248076.git.delyank@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/libbpf.c

index d989b0a17a891293133d02bbf22ff92f12516032..49e359cd34df88f3943f1135bccd8e2c3618c7d4 100644 (file)
@@ -9177,8 +9177,10 @@ static const struct bpf_sec_def section_defs[] = {
        SEC_DEF("sk_reuseport",         SK_REUSEPORT, BPF_SK_REUSEPORT_SELECT, SEC_ATTACHABLE | SEC_SLOPPY_PFX),
        SEC_DEF("kprobe+",              KPROBE, 0, SEC_NONE, attach_kprobe),
        SEC_DEF("uprobe+",              KPROBE, 0, SEC_NONE, attach_uprobe),
+       SEC_DEF("uprobe.s+",            KPROBE, 0, SEC_SLEEPABLE, attach_uprobe),
        SEC_DEF("kretprobe+",           KPROBE, 0, SEC_NONE, attach_kprobe),
        SEC_DEF("uretprobe+",           KPROBE, 0, SEC_NONE, attach_uprobe),
+       SEC_DEF("uretprobe.s+",         KPROBE, 0, SEC_SLEEPABLE, attach_uprobe),
        SEC_DEF("kprobe.multi+",        KPROBE, BPF_TRACE_KPROBE_MULTI, SEC_NONE, attach_kprobe_multi),
        SEC_DEF("kretprobe.multi+",     KPROBE, BPF_TRACE_KPROBE_MULTI, SEC_NONE, attach_kprobe_multi),
        SEC_DEF("usdt+",                KPROBE, 0, SEC_NONE, attach_usdt),
@@ -11571,7 +11573,8 @@ static int attach_uprobe(const struct bpf_program *prog, long cookie, struct bpf
                break;
        case 3:
        case 4:
-               opts.retprobe = strcmp(probe_type, "uretprobe") == 0;
+               opts.retprobe = strcmp(probe_type, "uretprobe") == 0 ||
+                               strcmp(probe_type, "uretprobe.s") == 0;
                if (opts.retprobe && offset != 0) {
                        pr_warn("prog '%s': uretprobes do not support offset specification\n",
                                prog->name);