From: Jiri Olsa <jolsa@redhat.com>
To: Eelco Chaudron <echaudro@redhat.com>
Cc: Yonghong Song <yhs@fb.com>,
bpf@vger.kernel.org, netdev@vger.kernel.org, ast@kernel.org,
daniel@iogearbox.net, kafai@fb.com, songliubraving@fb.com,
andriin@fb.com, toke@redhat.com
Subject: Re: fentry/fexit attach to EXT type XDP program does not work
Date: Wed, 29 Jul 2020 10:09:05 +0200 [thread overview]
Message-ID: <20200729080905.GG1319041@krava> (raw)
In-Reply-To: <95AF8533-2C7D-4038-AD39-4C81DBF25551@redhat.com>
On Wed, Jul 29, 2020 at 08:23:56AM +0200, Eelco Chaudron wrote:
SNIP
> > > > > a patch
> > > > > that would nice.
> > > > > You can also send it to me before bpf-next opens and I can verify
> > > > > it, and
> > > > > clean up the self-test so it can be included as well.
> > > > >
> > > >
> > > > hi,
> > > > it seems that you cannot exten fentry/fexit programs,
> > > > but it's possible to attach fentry/fexit to ext program.
> > > >
> > > > /* Program extensions can extend all program types
> > > > * except fentry/fexit. The reason is the following.
> > > > * The fentry/fexit programs are used for performance
> > > > * analysis, stats and can be attached to any program
> > > > * type except themselves. When extension program is
> > > > * replacing XDP function it is necessary to allow
> > > > * performance analysis of all functions. Both original
> > > > * XDP program and its program extension. Hence
> > > > * attaching fentry/fexit to BPF_PROG_TYPE_EXT is
> > > > * allowed. If extending of fentry/fexit was allowed it
> > > > * would be possible to create long call chain
> > > > * fentry->extension->fentry->extension beyond
> > > > * reasonable stack size. Hence extending fentry is not
> > > > * allowed.
> > > > */
> > > >
> > > > I changed fexit_bpf2bpf.c test just to do a quick check
> > > > and it seems to work:
> > >
> > > Hi Jiri this is exactly what I’m trying, however when you do this
> > > where the
> > > first argument is a pointer to some context data which you are
> > > accessing
> > > it’s failing in the verifier.
> > > This is a link to the original email, which has a test patch
> > > attached that
> > > will show the failure when trying to load/attach the fentry function
> > > and
> > > access the context:
> > >
> > > https://lore.kernel.org/bpf/159162546868.10791.12432342618156330247.stgit@ebuild/
> >
> > ok, I tried to trace ext program with __sk_buff argument and I can see
> > the issue as well.. can't acess the skb argument
> >
> > patch below fixes it for me, I can access the skb pointer and its data
> > via probe read, like:
> >
> > SEC("fexit/new_get_skb_ifindex")
> > int BPF_PROG(fexit_new_get_skb_ifindex, int val, struct __sk_buff *skb,
> > int var, int ret)
> > {
> > __u32 data;
> > int err;
> >
> > bpf_printk("EXIT skb %p", skb);
> > bpf_probe_read_kernel(&data, sizeof(data), &skb->data);
> > bpf_printk("EXIT ret %d, data %p", err, data);
> > return 0;
> > }
> >
> > I think it should fix the xdp_md acess as well
>
> Excellent patch ;) It works with xdp_md as well, and even better it does not
> require the bpf_probe_read_kernel(), so the test_xdp_bpf2bpf.c code just
> works.
great ;-) will check on xdp_md
>
> Are you planning to send the patch upstream?
yep, I'll add some test for that and send it
thanks,
jirka
prev parent reply other threads:[~2020-07-29 8:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-08 14:11 fentry/fexit attach to EXT type XDP program does not work Eelco Chaudron
2020-06-08 16:58 ` Yonghong Song
2020-06-09 8:52 ` Eelco Chaudron
2020-07-26 12:24 ` Jiri Olsa
2020-07-27 7:59 ` Eelco Chaudron
2020-07-27 14:53 ` Jiri Olsa
2020-07-29 6:23 ` Eelco Chaudron
2020-07-29 8:09 ` Jiri Olsa [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200729080905.GG1319041@krava \
--to=jolsa@redhat.com \
--cc=andriin@fb.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=echaudro@redhat.com \
--cc=kafai@fb.com \
--cc=netdev@vger.kernel.org \
--cc=songliubraving@fb.com \
--cc=toke@redhat.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.