Messages in this thread | | | Date | Fri, 12 Mar 2021 18:22:17 -0800 | From | Sultan Alsawaf <> | Subject | Re: [PATCH] libbpf: Use the correct fd when attaching to perf events |
| |
On Fri, Mar 12, 2021 at 05:31:14PM -0800, Andrii Nakryiko wrote: > On Fri, Mar 12, 2021 at 1:43 PM Sultan Alsawaf <sultan@kerneltoast.com> wrote: > > > > From: Sultan Alsawaf <sultan@kerneltoast.com> > > > > We should be using the program fd here, not the perf event fd. > > Why? Can you elaborate on what issue you ran into with the current code?
bpf_link__pin() would fail with -EINVAL when using tracepoints, kprobes, or uprobes. The failure would happen inside the kernel, in bpf_link_get_from_fd() right here: if (f.file->f_op != &bpf_link_fops) { fdput(f); return ERR_PTR(-EINVAL); }
Since bpf wasn't looking for the perf event fd, I swapped it for the program fd and bpf_link__pin() worked.
Sultan
| |