• Maxim Mikityanskiy's avatar
    bpf: Add selftests to cover packet access corner cases · b560b21f
    Maxim Mikityanskiy authored
    This commit adds BPF verifier selftests that cover all corner cases by
    packet boundary checks. Specifically, 8-byte packet reads are tested at
    the beginning of data and at the beginning of data_meta, using all kinds
    of boundary checks (all comparison operators: <, >, <=, >=; both
    permutations of operands: data + length compared to end, end compared to
    data + length). For each case there are three tests:
    
    1. Length is just enough for an 8-byte read. Length is either 7 or 8,
       depending on the comparison.
    
    2. Length is increased by 1 - should still pass the verifier. These
       cases are useful, because they failed before commit 2fa7d94a
       ("bpf: Fix the off-by-two error in range markings").
    
    3. Length is decreased by 1 - should be rejected by the verifier.
    
    Some existing tests are just renamed to avoid duplication.
    Signed-off-by: default avatarMaxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211207081521.41923-1-maximmi@nvidia.com
    b560b21f
xdp_direct_packet_access.c 47.7 KB