On Wed, Mar 29, 2023 at 11:36 AM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: > > On Mon, 2023-03-27 at 11:52 -0700, Andrii Nakryiko wrote: > > SEC("freplace") (i.e., BPF_PROG_TYPE_EXT) programs are not loadable as > > is through veristat, as kernel expects actual program's FD during > > BPF_PROG_LOAD time, which veristat has no way of knowing. > > > > Unfortunately, freplace programs are a pretty important class of > > programs, especially when dealing with XDP chaining solutions, which > > rely on EXT programs. > > > > So let's do our best and teach veristat to try to guess the original > > program type, based on program's context argument type. And if guessing > > process succeeds, we manually override freplace/EXT with guessed program > > type using bpf_program__set_type() setter to increase chances of proper > > BPF verification. > > > > We rely on BTF and maintain a simple lookup table. This process is > > obviously not 100% bulletproof, as valid program might not use context > > and thus wouldn't have to specify correct type. Also, __sk_buff is very > > ambiguous and is the context type across many different program types. > > We pick BPF_PROG_TYPE_CGROUP_SKB for now, which seems to work fine in > > practice so far. Similarly, some program types require specifying attach > > type, and so we pick one out of possible few variants. > > > > Best effort at its best. But this makes veristat even more widely > > applicable. > > > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > > I left one nitpick below, otherwise looks good. > > I tried in on freplace programs from selftests and only 3 out 18 > programs verified correctly, others complained about unavailable > functions or exit code not in range [0, 1], etc. > Not sure, if it's possible to select more permissive attachment kinds, though. > > Tested-by: Eduard Zingerman <eddyz87@xxxxxxxxx> Thanks for testing and important feedback. I've applied the set. The nits can be addressed in the follow up. What do you have in mind as 'more permissive attach' ? What are those 15 out of 18 with invalid exit code? What kind of attach_type will help?