On Sat, 24 Apr 2021 at 00:36, Andrii Nakryiko <andrii@xxxxxxxxxx> wrote: > > Negative field existence cases for have a broken assumption that FIELD_EXISTS > CO-RE relo will fail for fields that match the name but have incompatible type > signature. That's not how CO-RE relocations generally behave. Types and fields > that match by name but not by expected type are treated as non-matching > candidates and are skipped. Error later is reported if no matching candidate > was found. That's what happens for most relocations, but existence relocations > (FIELD_EXISTS and TYPE_EXISTS) are more permissive and they are designed to > return 0 or 1, depending if a match is found. This allows to handle > name-conflicting but incompatible types in BPF code easily. Combined with > ___flavor suffixes, it's possible to handle pretty much any structural type > changes in kernel within the compiled once BPF source code. > > So, long story short, negative field existence test cases are invalid in their > assumptions, so this patch reworks them into a single consolidated positive > case that doesn't match any of the fields. > > Fixes: c7566a69695c ("selftests/bpf: Add field existence CO-RE relocs tests") > Reported-by: Lorenz Bauer <lmb@xxxxxxxxxxxxxx> > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> Acked-by: Lorenz Bauer <lmb@xxxxxxxxxxxxxx> -- Lorenz Bauer | Systems Engineer 6th Floor, County Hall/The Riverside Building, SE1 7PB, UK www.cloudflare.com