[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230308015500.6pycr5i4nynyu22n@heavy>
Date: Wed, 8 Mar 2023 02:55:00 +0100
From: Ilya Leoshkevich <iii@...ux.ibm.com>
To: Joanne Koong <joannelkoong@...il.com>,
Alexei Starovoitov <alexei.starovoitov@...il.com>
Cc: bpf <bpf@...r.kernel.org>,
Martin KaFai Lau <martin.lau@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>,
Alexei Starovoitov <ast@...nel.org>,
Kumar Kartikeya Dwivedi <memxor@...il.com>,
Daniel Borkmann <daniel@...earbox.net>,
Network Development <netdev@...r.kernel.org>,
Toke Høiland-Jørgensen <toke@...nel.org>
Subject: Re: [PATCH v13 bpf-next 10/10] selftests/bpf: tests for using
dynptrs to parse skb and xdp buffers
On Wed, Mar 01, 2023 at 08:28:40PM -0800, Joanne Koong wrote:
> On Wed, Mar 1, 2023 at 10:08 AM Alexei Starovoitov
> <alexei.starovoitov@...il.com> wrote:
> >
> > On Wed, Mar 1, 2023 at 7:51 AM Joanne Koong <joannelkoong@...il.com> wrote:
> > >
> > > 5) progs/dynptr_success.c
> > > * Add test case "test_skb_readonly" for testing attempts at writes
> > > on a prog type with read-only skb ctx.
> > > * Add "test_dynptr_skb_data" for testing that bpf_dynptr_data isn't
> > > supported for skb progs.
> >
> > I added
> > +dynptr/test_dynptr_skb_data
> > +dynptr/test_skb_readonly
> > to DENYLIST.s390x and applied.
>
> Thanks, I'm still not sure why s390x cannot load these programs. It is
> being loaded in the same way as other tests like
> test_parse_tcp_hdr_opt() are loading programs. I will keep looking
> some more into this
Hi,
I believe the culprit is:
insn->imm = BPF_CALL_IMM(bpf_dynptr_from_skb_rdonly);
s390x needs to know the kfunc model in order to emit the call (like
i386), but after this assignment it's no longer possible to look it
up in kfunc_tab by insn->imm. x86_64 does not need this, because its
ABI is exactly the same as BPF ABI.
The simplest solution seems to be adding an artificial kfunc_desc
like this:
{
.func_model = desc->func_model, /* model must be compatible */
.func_id = 0, /* unused at this point */
.imm = insn->imm, /* new target */
.offset = 0, /* unused at this point */
}
here and also after this assignment:
insn->imm = BPF_CALL_IMM(xdp_kfunc);
What do you think?
[...]
Best regards,
Ilya
Powered by blists - more mailing lists