public inbox for bpf@vger.kernel.org
 help / color / mirror / Atom feed
From: Matt Bobrowski <mattbobrowski@google.com>
To: Emil Tsalapatis <emil@etsalapatis.com>
Cc: bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org,
	memxor@gmail.com, daniel@iogearbox.net, eddyz87@gmail.com,
	song@kernel.org
Subject: Re: [PATCH bpf-next v7 0/9]  Introduce arena library and runtime
Date: Thu, 16 Apr 2026 20:31:37 +0000	[thread overview]
Message-ID: <aeFHKUsf86jw1v9W@google.com> (raw)
In-Reply-To: <aeFFQL-bOTN5dg7V@google.com>

On Thu, Apr 16, 2026 at 08:23:28PM +0000, Matt Bobrowski wrote:
> On Sun, Apr 12, 2026 at 01:45:37PM -0400, Emil Tsalapatis wrote:
> > Add a new subdirectory to tools/testing/selftests/bpf called libarena,
> > along with programs useful for writing arena-based BPF code. This
> > patchset adds the following:
> > 
> > 1) libarena, a subdirectory where arena BPF code that is generally useful
> > to BPF arena programs can be easily added and tested.
> > 
> > 2) An ASAN runtime for BPF arena programs. BPF arenas allow for accessing
> > memory after it has been freed or if it is out of bounds, making it more
> > difficult to triage bugs combined to regular BPF. Use LLVM's recently added
> > support for address-space based sanitization to selectively sanitize just
> > the arena accesses.
> > 
> > 3) A buddy memory allocator that can be reused by BPF programs to handle
> > memory allocation/deletion. The allocator uses the ASAN runtime to add
> > address sanitization if requested.
> > 
> > The patch includes testing for the new allocators and ASAN features that
> > can be built from the top directory using "make libarena_test" and
> > "make libarena_test_asan". The generated binaries reside in libarena/.
> > The patch also adds test-progs-based selftests to the codebase for the
> > libarena code, so the new tests are run by ./test_progs.
> > 
> > The patchset has the following stucture:
> > 
> > 1-2: Addresses a verification failure triggered by SCALAR += PTR_TO_ARENA
> > instructions.
> > 
> > 3-4: Minor changes to selftest headers to prepare for the introduction
> > of libarena.
> > 
> > 5-7: Add the libarena directory and testing scaffolding, and introduce
> > the ASAN runtime.
> > 
> > 8-9: Add the new buddy memory allocator along with self-contained and
> > prog-tests-based selftests.
> 
> I haven't had an opportunity to go through this patch series just yet,
> but can I just say that it excites me considerably! I've been wanting
> to carve out some time to implement something exactly like this for a
> very long time (since BPF arena maps were initially introduced) as I
> think it's going to be incredibly valuable for BPF users moving
> forward.

I swear that I also saw a notification stating that this series was
applied to bpf/bpf-next.git (master), but upon checking I only see
that commit 4c5f21d4dfa ("selftests/bpf: Add tests for non-arena/arena
operations") from the series was applied. What's going on there?

> > Signed-off-by: Emil Tsalapatis <emil@etsalapatis.com>
> > 
> > HISTORY
> > =======
> > 
> > v6->v7 (https://lore.kernel.org/bpf/20260412011857.3387-1-emil@etsalapatis.com)
> > - Modify patch 1 to allow operations between PTR_TO_ARENA src_reg
> > and dst_reg of any type. Adjust selftests accordingly (Alexei)
> > - Remove unnecessary include in patch 5 (Song)
> > - Removed unused definitions/assignments in patches 8/9, update patch
> >   descriptions
> > 
> > v5->v6 (https://lore.kernel.org/bpf/20260410163041.8063-1-emil@etsalapatis.com)
> > - Fix subreg_def management for SCALAR += PTR_TO_ARENA operations (AI)
> > - Add more selftests for the SCALAR += PTR_TO_ARENA patch (Sashiko)
> > - Adjust fls() operation to be in line with the kernel version (Sashiko)
> > - Address Sashiko selftests and debugging nits
> > - Add ASAN loadN and storeN _noabort variants and associated BTF anchor
> > - Remove unnecessary bit freeing of buddies during block splitting
> > 
> > v4->v5 (https://lore.kernel.org/bpf/20260407045730.13359-1-emil@etsalapatis.com)
> > Omitting various nits and fixups.
> > - Properly adjust subreg_def for scalar += ptr_to_arena calls (Sashiko)
> > - Remove extraneous definition from prog_tests/arena_spin_lock.c (Song)
> > - Trim extraneous comments from ASAN and buddy (Alexei)
> > - Remove asan_dummy call and replace with function pointer array (Alexei)
> > - Remove usersapi.h header and merge it into common.h (Alexei)
> > - Replace ASAN macros with function calls (Alexei)
> > - Embed buddy lock into the struct and move the buddy allocator to __arena_global
> >   (Alexei)
> > - Add commenting for buddy allocator constants (Alexei)
> > - Add default buddy allocator directly in common.bpf.c, so that the user does
> >   not need to define it.
> > - Expand test harnesses to dynamically find individual selftests. Now the
> >   selftests also reports each test individually (e.g., 5 entries for the
> >   buddy allocator instead of 1). This brings them to par with the rest of
> >   the test_progs.
> > 
> > v3->v4 (https://lore.kernel.org/bpf/20260403042720.18862-1-emil@etsalapatis.com)
> > - Add Acks by Song to patches 1-4.
> > - Expand the verifier's handling of scalar/arena operations to
> >   include all 3-operand operations in Patch 1 (Alexei)
> > - Add additional tests for arena/arena (allowed) and arena/pointer (not allowed)
> > operations in Patch 2
> > - Remove ASAN version of the library from default compilation since it requires
> > LLVM 22 and up (CI)
> > - Rework buddy allocator locking for clarity and add comments
> > - Fix From: email to be consistent with SOB
> > - Address (most) Sashiko comments
> > 
> > v2->v3 (https://lore.kernel.org/bpf/20260127181610.86376-1-emil@etsalapatis.com)
> > Nonexhaustive due to significant patch rework.
> > - Do not duplicate WRITE_ONCE macro (Mykyta, Kumar)
> > - Add SPDX headers (Alexei)
> > - Remove bump/stack allocators (Alexei)
> > - Integrate testing with test_progs (Kumar)
> > - Add short description of ASAN algorithm at the top of the file (Alexei)
> > 
> > v1->v2 (https://lore.kernel.org/bpf/20260122160131.2238331-1-etsal@meta.com/)
> > 
> > - Added missing format string argument (AI)
> > - Fix outdated selftests prog name check (AI)
> > - Fixed stack allocation check for segment creation (AI)
> > - Fix errors in non-ASAN bump allocator selftests (AI)
> > - Propagate error value from individual selftests in selftest.c
> > - Removed embedded metadata from bump allocator as it was needlessly
> >   complicating its behavior
> > 
> > 
> > Emil Tsalapatis (9):
> >   bpf: Allow instructions with arena source and non-arena dest registers
> >   selftests/bpf: Add tests for non-arena/arena operations
> >   selftests/bpf: Move bpf_arena_spin_lock.h to the top level
> >   selftests/bpf: Move READ_ONCE/WRITE_ONCE macros to bpf_experimental.h
> >   selftests/bpf: Add basic libarena scaffolding
> >   selftests/bpf: Add arena ASAN runtime to libarena
> >   selftests/bpf: Add ASAN support for libarena selftests
> >   selftests/bpf: Add buddy allocator for libarena
> >   selftests/bpf: Add selftests for libarena buddy allocator
> > 
> >  kernel/bpf/verifier.c                         |  14 +-
> >  tools/testing/selftests/bpf/.gitignore        |   2 +
> >  tools/testing/selftests/bpf/Makefile          |  28 +-
> >  .../testing/selftests/bpf/bpf_arena_common.h  |   4 -
> >  .../bpf/{progs => }/bpf_arena_spin_lock.h     |   4 +-
> >  tools/testing/selftests/bpf/bpf_atomic.h      |   4 -
> >  .../testing/selftests/bpf/bpf_experimental.h  |   3 +
> >  tools/testing/selftests/bpf/libarena/Makefile |  77 ++
> >  .../selftests/bpf/libarena/include/asan.h     | 118 +++
> >  .../selftests/bpf/libarena/include/buddy.h    |  92 ++
> >  .../selftests/bpf/libarena/include/common.h   |  67 ++
> >  .../bpf/libarena/include/selftest_helpers.h   | 121 +++
> >  .../bpf/libarena/selftests/selftest.c         | 188 ++++
> >  .../libarena/selftests/st_asan_buddy.bpf.c    | 241 +++++
> >  .../bpf/libarena/selftests/st_asan_common.h   |  47 +
> >  .../bpf/libarena/selftests/st_buddy.bpf.c     | 208 ++++
> >  .../selftests/bpf/libarena/src/asan.bpf.c     | 559 +++++++++++
> >  .../selftests/bpf/libarena/src/buddy.bpf.c    | 903 ++++++++++++++++++
> >  .../selftests/bpf/libarena/src/common.bpf.c   |  74 ++
> >  .../bpf/prog_tests/arena_spin_lock.c          |   7 -
> >  .../selftests/bpf/prog_tests/libarena.c       |  62 ++
> >  .../selftests/bpf/progs/arena_spin_lock.c     |   2 +-
> >  .../selftests/bpf/progs/verifier_arena.c      | 130 +++
> >  23 files changed, 2934 insertions(+), 21 deletions(-)
> >  rename tools/testing/selftests/bpf/{progs => }/bpf_arena_spin_lock.h (99%)
> >  create mode 100644 tools/testing/selftests/bpf/libarena/Makefile
> >  create mode 100644 tools/testing/selftests/bpf/libarena/include/asan.h
> >  create mode 100644 tools/testing/selftests/bpf/libarena/include/buddy.h
> >  create mode 100644 tools/testing/selftests/bpf/libarena/include/common.h
> >  create mode 100644 tools/testing/selftests/bpf/libarena/include/selftest_helpers.h
> >  create mode 100644 tools/testing/selftests/bpf/libarena/selftests/selftest.c
> >  create mode 100644 tools/testing/selftests/bpf/libarena/selftests/st_asan_buddy.bpf.c
> >  create mode 100644 tools/testing/selftests/bpf/libarena/selftests/st_asan_common.h
> >  create mode 100644 tools/testing/selftests/bpf/libarena/selftests/st_buddy.bpf.c
> >  create mode 100644 tools/testing/selftests/bpf/libarena/src/asan.bpf.c
> >  create mode 100644 tools/testing/selftests/bpf/libarena/src/buddy.bpf.c
> >  create mode 100644 tools/testing/selftests/bpf/libarena/src/common.bpf.c
> >  create mode 100644 tools/testing/selftests/bpf/prog_tests/libarena.c
> > 
> > -- 
> > 2.53.0
> > 

  reply	other threads:[~2026-04-16 20:31 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-12 17:45 [PATCH bpf-next v7 0/9] Introduce arena library and runtime Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 1/9] bpf: Allow instructions with arena source and non-arena dest registers Emil Tsalapatis
2026-04-12 19:54   ` Alexei Starovoitov
2026-04-12 17:45 ` [PATCH bpf-next v7 2/9] selftests/bpf: Add tests for non-arena/arena operations Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 3/9] selftests/bpf: Move bpf_arena_spin_lock.h to the top level Emil Tsalapatis
2026-04-12 19:31   ` Kumar Kartikeya Dwivedi
2026-04-12 17:45 ` [PATCH bpf-next v7 4/9] selftests/bpf: Move READ_ONCE/WRITE_ONCE macros to bpf_experimental.h Emil Tsalapatis
2026-04-12 19:33   ` Kumar Kartikeya Dwivedi
2026-04-12 17:45 ` [PATCH bpf-next v7 5/9] selftests/bpf: Add basic libarena scaffolding Emil Tsalapatis
2026-04-12 18:28   ` bot+bpf-ci
2026-04-12 18:31     ` Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 6/9] selftests/bpf: Add arena ASAN runtime to libarena Emil Tsalapatis
2026-04-12 18:28   ` bot+bpf-ci
2026-04-12 18:34     ` Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 7/9] selftests/bpf: Add ASAN support for libarena selftests Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 8/9] selftests/bpf: Add buddy allocator for libarena Emil Tsalapatis
2026-04-12 17:45 ` [PATCH bpf-next v7 9/9] selftests/bpf: Add selftests for libarena buddy allocator Emil Tsalapatis
2026-04-12 19:22 ` [PATCH bpf-next v7 0/9] Introduce arena library and runtime Kumar Kartikeya Dwivedi
2026-04-12 20:00 ` patchwork-bot+netdevbpf
2026-04-16 20:23 ` Matt Bobrowski
2026-04-16 20:31   ` Matt Bobrowski [this message]
2026-04-16 20:43     ` Song Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aeFHKUsf86jw1v9W@google.com \
    --to=mattbobrowski@google.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=emil@etsalapatis.com \
    --cc=memxor@gmail.com \
    --cc=song@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox