mbox series

[0/2] Allow bpf_user_ringbuf_drain() callbacks to return 1

Message ID 20221012232015.1510043-1-void@manifault.com (mailing list archive)
Headers show
Series Allow bpf_user_ringbuf_drain() callbacks to return 1 | expand

Message

David Vernet Oct. 12, 2022, 11:20 p.m. UTC
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 1bfe26fb0827 ("bpf: Add verifier support for custom
callback return range"), which changed the default behavior of callbacks
to only support returning 0, and the corresponding necessary change to
bpf_user_ringbuf_drain() callbacks was missed.

This patch set fixes this oversight, and updates the user_ringbuf
selftests to return 1 in a callback to catch future instances of
regression.

This patch set should be merged to the bpf tree.

David Vernet (2):
  bpf: Allow bpf_user_ringbuf_drain() callbacks to return 1
  selftests/bpf: Make bpf_user_ringbuf_drain() selftest callback return
    1

 kernel/bpf/verifier.c                                    | 1 +
 tools/testing/selftests/bpf/progs/user_ringbuf_success.c | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

Andrii Nakryiko Oct. 13, 2022, 3:32 p.m. UTC | #1
On Wed, Oct 12, 2022 at 4:20 PM David Vernet <void@manifault.com> wrote:
>
> 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 1bfe26fb0827 ("bpf: Add verifier support for custom
> callback return range"), which changed the default behavior of callbacks
> to only support returning 0, and the corresponding necessary change to
> bpf_user_ringbuf_drain() callbacks was missed.
>
> This patch set fixes this oversight, and updates the user_ringbuf
> selftests to return 1 in a callback to catch future instances of
> regression.
>
> This patch set should be merged to the bpf tree.

Please tag patch as [PATCH bpf x/N] next time. This will make it clear
that it's targeted against the bpf tree and will let our CI know that
it should be applied and tested in bpf (it chooses bpf-next by
default).

>
> David Vernet (2):
>   bpf: Allow bpf_user_ringbuf_drain() callbacks to return 1
>   selftests/bpf: Make bpf_user_ringbuf_drain() selftest callback return
>     1
>
>  kernel/bpf/verifier.c                                    | 1 +
>  tools/testing/selftests/bpf/progs/user_ringbuf_success.c | 4 ++--
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> --
> 2.38.0
>
patchwork-bot+netdevbpf@kernel.org Oct. 13, 2022, 3:40 p.m. UTC | #2
Hello:

This series was applied to bpf/bpf.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Wed, 12 Oct 2022 18:20:13 -0500 you wrote:
> 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 1bfe26fb0827 ("bpf: Add verifier support for custom
> callback return range"), which changed the default behavior of callbacks
> to only support returning 0, and the corresponding necessary change to
> bpf_user_ringbuf_drain() callbacks was missed.
> 
> [...]

Here is the summary with links:
  - [1/2] bpf: Allow bpf_user_ringbuf_drain() callbacks to return 1
    https://git.kernel.org/bpf/bpf/c/c92a7a522438
  - [2/2] selftests/bpf: Make bpf_user_ringbuf_drain() selftest callback return 1
    https://git.kernel.org/bpf/bpf/c/6e44b9f375a3

You are awesome, thank you!