• Daniel Borkmann's avatar
    bpf: Fix ringbuf helper function compatibility · 5b029a32
    Daniel Borkmann authored
    Commit 457f4436 ("bpf: Implement BPF ring buffer and verifier support
    for it") extended check_map_func_compatibility() by enforcing map -> helper
    function match, but not helper -> map type match.
    
    Due to this all of the bpf_ringbuf_*() helper functions could be used with
    a wrong map type such as array or hash map, leading to invalid access due
    to type confusion.
    
    Also, both BPF_FUNC_ringbuf_{submit,discard} have ARG_PTR_TO_ALLOC_MEM as
    argument and not a BPF map. Therefore, their check_map_func_compatibility()
    presence is incorrect since it's only for map type checking.
    
    Fixes: 457f4436 ("bpf: Implement BPF ring buffer and verifier support for it")
    Reported-by: Ryota Shiga (Flatt Security)
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    5b029a32
verifier.c 384 KB