lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 6 Sep 2022 18:12:43 +0200 From: Benjamin Tissoires <benjamin.tissoires@...hat.com> To: Kumar Kartikeya Dwivedi <memxor@...il.com> Cc: Greg KH <gregkh@...uxfoundation.org>, Jiri Kosina <jikos@...nel.org>, Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann <daniel@...earbox.net>, Andrii Nakryiko <andrii@...nel.org>, Martin KaFai Lau <kafai@...com>, Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>, John Fastabend <john.fastabend@...il.com>, KP Singh <kpsingh@...nel.org>, Shuah Khan <shuah@...nel.org>, Dave Marchevsky <davemarchevsky@...com>, Joe Stringer <joe@...ium.io>, Jonathan Corbet <corbet@....net>, Tero Kristo <tero.kristo@...ux.intel.com>, lkml <linux-kernel@...r.kernel.org>, "open list:HID CORE LAYER" <linux-input@...r.kernel.org>, Networking <netdev@...r.kernel.org>, bpf <bpf@...r.kernel.org>, "open list:KERNEL SELFTEST FRAMEWORK" <linux-kselftest@...r.kernel.org>, Linux Doc Mailing List <linux-doc@...r.kernel.org> Subject: Re: [PATCH bpf-next v10 01/23] selftests/bpf: regroup and declare similar kfuncs selftests in an array On Tue, Sep 6, 2022 at 3:50 PM Benjamin Tissoires <benjamin.tissoires@...hat.com> wrote: > > On Tue, Sep 6, 2022 at 5:27 AM Kumar Kartikeya Dwivedi <memxor@...il.com> wrote: > > > > On Tue, 6 Sept 2022 at 05:25, Kumar Kartikeya Dwivedi <memxor@...il.com> wrote: > > > > > > On Fri, 2 Sept 2022 at 15:29, Benjamin Tissoires > > > <benjamin.tissoires@...hat.com> wrote: > > > > > > > > Similar to tools/testing/selftests/bpf/prog_tests/dynptr.c: > > > > we declare an array of tests that we run one by one in a for loop. > > > > > > > > Followup patches will add more similar-ish tests, so avoid a lot of copy > > > > paste by grouping the declaration in an array. > > > > > > > > To be able to call bpf_object__find_program_by_name(), we need to use > > > > plain libbpf calls, and not light skeletons. So also change the Makefile > > > > to not generate light skeletons. > > > > > > > > Signed-off-by: Benjamin Tissoires <benjamin.tissoires@...hat.com> > > > > > > > > --- > > > > > > I see your point, but this is also a test so that we keep verifying > > > kfunc call in light skeleton. > > > Code for relocating both is different in libbpf (we generate BPF ASM > > > for light skeleton so it is done inside a loader BPF program instead > > > of userspace). > > > > Err, hit send too early. > > We can probably use a macro to hide how program is called, then do > > X(prog1) > > X(prog2) > > in a series, won't look too bad and avoids duplication at the same time. > > > > > You might then be able to make it work for both light and normal skeleton. > > > > > WDYT? > > > > On this patch alone, I concede the benefit is minimum. But if you look > at 6/23, I must confess I definitely prefer having just an array of > tests at the beginning instead of crippling the tests functions with > calls or macros. > > The actual reason for me to ditch light skeletons was because I was > using bpf_object__find_program_by_name(). > > But I can work around that by relying on the offsetof() macro, and > make the whole thing working for *both* light skeleton and libbpf: > +struct kfunc_test_params { > + const char *prog_name; > + unsigned long int lskel_prog_desc_offset; > + int retval; > +}; > + > +#define TC_TEST(name,__retval) \ > + { \ > + .prog_name = #name, \ > + .lskel_prog_desc_offset = offsetof(struct > kfunc_call_test_lskel, progs.name), \ > + .retval = __retval, \ > + } > + > +static struct kfunc_test_params kfunc_tests[] = { > + TC_TEST(kfunc_call_test1, 12), > + TC_TEST(kfunc_call_test2, 3), > + TC_TEST(kfunc_call_test_ref_btf_id, 0), > +}; > + > +static void verify_success(struct kfunc_test_params *param) > { > [...] > + struct bpf_prog_desc *lskel_prog = (struct bpf_prog_desc > *)((char *)lskel + param->lskel_prog_desc_offset); > > However, for failing tests, I can not really rely on light skeletons > because we can not dynamically set the autoload property. > So either I split every failed test in its own file, or I only test > the ones that are supposed to load, which don't add a lot IMO. > > I'll repost the bpf-core changes only so you can have a better idea of > what I am saying. > FWIW, I have now sent them at [0] and dropped all of the people not in get_maintainers.pl. Cheers, Benjamin [0] https://lore.kernel.org/all/20220906151303.2780789-1-benjamin.tissoires@redhat.com/T/#u
Powered by blists - more mailing lists