• Paul Chaignon's avatar
    selftests/bpf: test cases for pkt/null checks in subprogs · 6dd7f140
    Paul Chaignon authored
    The first test case, for pointer null checks, is equivalent to the
    following pseudo-code.  It checks that the verifier does not complain on
    line 6 and recognizes that ptr isn't null.
    
    1: ptr = bpf_map_lookup_elem(map, &key);
    2: ret = subprog(ptr) {
    3:   return ptr != NULL;
    4: }
    5: if (ret)
    6:   value = *ptr;
    
    The second test case, for packet bound checks, is equivalent to the
    following pseudo-code.  It checks that the verifier does not complain on
    line 7 and recognizes that the packet is at least 1 byte long.
    
    1: pkt_end = ctx.pkt_end;
    2: ptr = ctx.pkt + 8;
    3: ret = subprog(ptr, pkt_end) {
    4:   return ptr <= pkt_end;
    5: }
    6: if (ret)
    7:   value = *(u8 *)ctx.pkt;
    Signed-off-by: default avatarPaul Chaignon <paul.chaignon@orange.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    6dd7f140
direct_packet_access.c 20.7 KB