mbox series

[bpf-next,v2,0/2] BPF Ringbuffer + Sleepable Programs

Message ID 20210204193622.3367275-1-kpsingh@kernel.org (mailing list archive)
Headers show
Series BPF Ringbuffer + Sleepable Programs | expand

Message

KP Singh Feb. 4, 2021, 7:36 p.m. UTC
# v1 -> v2

- Use ring_buffer__consume without BPF_RB_FORCE_WAKEUP as suggested by
  Andrii
- Use ASSERT_OK_PTR macro

Sleepable programs currently do not have access to any ringbuffer and
since the perf ring buffer is a per-cpu map, it would not be trivial to
enable for sleepable programs. Our specific use-case is to use the
bpf_ima_inode_hash helper and write the hash to a ring buffer from a
sleepable LSM hook.

This series allows the BPF ringbuffer to be used in sleepable programs
(tracing and lsm). Since the helper prototypes were already exposed
the only change required was have the verifier allow
BPF_MAP_TYPE_RINGBUF for sleepable programs. The ima test is also
modified to use the ringbuffer instead of global variables.

Based on dicussions we had over the BPF office hours and enabling all
the possible debug options, I could not find any issues or warnings when
using the ring buffer from sleepable programs.



KP Singh (2):
  bpf: Allow usage of BPF ringbuffer in sleepable programs
  bpf/selftests: Update the IMA test to use BPF ring buffer

 kernel/bpf/verifier.c                         |  2 ++
 .../selftests/bpf/prog_tests/test_ima.c       | 23 ++++++++++---
 tools/testing/selftests/bpf/progs/ima.c       | 33 ++++++++++++++-----
 3 files changed, 45 insertions(+), 13 deletions(-)

Comments

Andrii Nakryiko Feb. 5, 2021, 7:06 a.m. UTC | #1
On Thu, Feb 4, 2021 at 11:36 AM KP Singh <kpsingh@kernel.org> wrote:
>
> # v1 -> v2
>
> - Use ring_buffer__consume without BPF_RB_FORCE_WAKEUP as suggested by
>   Andrii
> - Use ASSERT_OK_PTR macro
>
> Sleepable programs currently do not have access to any ringbuffer and
> since the perf ring buffer is a per-cpu map, it would not be trivial to
> enable for sleepable programs. Our specific use-case is to use the
> bpf_ima_inode_hash helper and write the hash to a ring buffer from a
> sleepable LSM hook.
>
> This series allows the BPF ringbuffer to be used in sleepable programs
> (tracing and lsm). Since the helper prototypes were already exposed
> the only change required was have the verifier allow
> BPF_MAP_TYPE_RINGBUF for sleepable programs. The ima test is also
> modified to use the ringbuffer instead of global variables.
>
> Based on dicussions we had over the BPF office hours and enabling all
> the possible debug options, I could not find any issues or warnings when
> using the ring buffer from sleepable programs.
>
>
>
> KP Singh (2):
>   bpf: Allow usage of BPF ringbuffer in sleepable programs
>   bpf/selftests: Update the IMA test to use BPF ring buffer
>
>  kernel/bpf/verifier.c                         |  2 ++
>  .../selftests/bpf/prog_tests/test_ima.c       | 23 ++++++++++---
>  tools/testing/selftests/bpf/progs/ima.c       | 33 ++++++++++++++-----
>  3 files changed, 45 insertions(+), 13 deletions(-)
>
> --
> 2.30.0.365.g02bc693789-goog
>

Bot didn't send a notification. This was applied to bpf-next.