• David Vernet's avatar
    bpf: Allow bpf_user_ringbuf_drain() callbacks to return 1 · c92a7a52
    David Vernet authored
    The bpf_user_ringbuf_drain() helper function allows a BPF program to
    specify a callback that is invoked when draining entries from a
    BPF_MAP_TYPE_USER_RINGBUF ring buffer map. The API is meant to allow the
    callback to return 0 if it wants to continue draining samples, and 1 if
    it's done draining. Unfortunately, bpf_user_ringbuf_drain() landed shortly
    after commit 1bfe26fb ("bpf: Add verifier support for custom
    callback return range"), which changed the default behavior of callbacks
    to only support returning 0.
    
    This patch corrects that oversight by allowing bpf_user_ringbuf_drain()
    callbacks to return 0 or 1. A follow-on patch will update the
    user_ringbuf selftests to also return 1 from a bpf_user_ringbuf_drain()
    callback to prevent this from regressing in the future.
    
    Fixes: 20571567 ("bpf: Add bpf_user_ringbuf_drain() helper")
    Signed-off-by: default avatarDavid Vernet <void@manifault.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20221012232015.1510043-2-void@manifault.com
    c92a7a52
verifier.c 438 KB