From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 212342FFDCB for ; Sun, 14 Jun 2026 18:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781460313; cv=none; b=ObPS/HWvwc6c184x19sRM+4j12OrxIbF9VHLn5qs4rJIVcAjg/X8zisT2jcxCZm2CPAMqpoaJmuSGR1B4hOWyCjBg2NjbCTyAk9fyNnMY/zWHY0CwaOgM6eflzel+BnXr3DCLVyFwccCbhO4BJJYpvVGc9U1DOmD/n8wm2KXIFw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781460313; c=relaxed/simple; bh=JW8FVJjTWsEThSF8JuDPEQLVO8P4vvAGBguPLz2MzXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eStkky9LpeLJXRAxvtdr/tl3x3C/Y3lZs8ODEbzGha00iXmQObDdUyYUDvGrNxsOuxWCPJosh3ebxUCmPblG6Xb0AxPn4fLnAecMSsrEr5Q4i6780ovnLkiVVklvZV6oZWFvwpu0TNiXExyFO2AYdXSo71CLGrldFj2lpSKzTvA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Fl4uK8Bs; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Fl4uK8Bs" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-45eecb8bf67so2127633f8f.2 for ; Sun, 14 Jun 2026 11:05:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781460309; x=1782065109; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ODX1HfUpj996EHRxNq42AhNa5RpVxfOswnO9waGWRWU=; b=Fl4uK8BsJaZJVqgss5hjKhcnd5Y12cSDM9HyD7qTiBSnX8H8JuXzMKvycKW/iwWPGz 6en+ISzeURkRnKGV98nxK0GfZlc/Lxz+x8ISsNvO5OYSVwkw3PkmwD9UQPVV/SLJskzI VtUSrXSCYvHohqidwpH3wmlVulFlt5d0/Tf3NbrqHGgkFFdluXk3ifKlgl3crzW4oIQ4 6MHFGyoEe8KrCml7MmQRy1OEabM7/HjQVFcsks5o5RJ0j9o14EzMHaLY1L+40qCrcEQX ZtrLSlDYwBqtUNRqbZyPGwwyx0i1k5ZpZoUJrzSdfUywYCKhvTqSq9dGsIklXpIYhrQQ +r6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781460309; x=1782065109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ODX1HfUpj996EHRxNq42AhNa5RpVxfOswnO9waGWRWU=; b=K8kzdzY3AkKtylkSKqjLXCCzQMzIuDx5eZteIMEj81rgJOCshIa5z7Q39M7uz6RROW 7Cv3iHUeFbjDNt0RPRzUEP7VsHfYeL4tqUW73vtglBwSJZmsMQMMtlNAtdk0w7ya14Qu ol0Yxc1cOUWoBr9EIZ00svzWUTn3C0Ahnla1Nqra0msqguPSct/yMYT8mN9sHillD30G e1iGyjbMciJmJojBTCjtqzy6b196UZLK8tRuL3TO327YmKdFoOpQ30HnVOHxtTo/Nreu /2P2QSKyJMhdvub6x0qs7nwMspHzgH5i+YD/OZ2CXknGCtk22/AOjAnOZME4rVcnM4FS xPOA== X-Forwarded-Encrypted: i=1; AFNElJ/diuXz3oVWdcAp4BJmDEOtsrbw5YwCAYsbILAFK9upXQNCuIbHmoaKwPFrPcMZJT9rwS+cuo9zEhXiHFw=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+ivIrK4KfrpNcx90/0emjHTMlCI9MaPkqFQxb907Nsr4HOGpc XL2+vqUxRb65DzB/Q3mghFSIvBtXlhfosfINkuughpzFZuz5X4nCLtZu X-Gm-Gg: Acq92OFqf/yMyaPPaJduXJk2NKzlak8AEBsM0qe8pv69qubBp4PFiPMxOblcudrPg+e dFK8tK5jOr8dhOPnADBOzv+Zl2eoCujcK4xdt/H2jHsRUpWZNDvaUGPUSWINGfaOq95YkuxraMJ eVBPky9++Gv93NF8wnhfq8Rft/AoMta5WawO+FnKU7GRPirPLxe1LtcsWMZhanVatoSRJ6lEVKW AuH236hD9Rl0bwcDRY8mZkg+VH4EP6iGZjVx2/LWOnc1lrHTycxFPw17vLW4s/L0Yd+SRIIMerW 0QfZWE0LvVaHHPihm1T2GwveyVAnxZf4En4IxIs4OwOMJTA4Ttda8SaCoB1FUcYN59HJ0KOr5Jx 2/WkLs73oN8YyBd6ZF+ieCuacGEOhZBJ2A90UKfMzBMR6VXj/xToYmpNIM+MhdXopqhP1nBa6M+ kwM/Vm2g+46v6hb2n9VdIVFudYAQardLflFpKs3PlsBh0wxLjVk3Ag89ZOj2kXJoM3smd64Up4K jtu X-Received: by 2002:a05:600c:3b16:b0:491:e3be:1363 with SMTP id 5b1f17b1804b1-491e3be13b3mr127467695e9.0.1781460309301; Sun, 14 Jun 2026 11:05:09 -0700 (PDT) Received: from ds-pc.. (host86-147-161-204.range86-147.btcentralplus.com. [86.147.161.204]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220345528sm205543945e9.8.2026.06.14.11.05.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 11:05:08 -0700 (PDT) From: Dhiraj Shah To: bpf@vger.kernel.org Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, andrii@kernel.org, eddyz87@gmail.com, ast@kernel.org, daniel@iogearbox.net, memxor@gmail.com, martin.lau@linux.dev, song@kernel.org, yonghong.song@linux.dev, jolsa@kernel.org, emil@etsalapatis.com, shuah@kernel.org Subject: [PATCH v2] selftests/bpf: Add arena direct-value boundary test Date: Sun, 14 Jun 2026 19:04:40 +0100 Message-ID: <20260614180440.1073941-1-find.dhiraj@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260614163352.1060813-1-find.dhiraj@gmail.com> References: <20260614163352.1060813-1-find.dhiraj@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add coverage for direct map value access against BPF_MAP_TYPE_ARENA. For a one-page arena, an offset of PAGE_SIZE - 1 is valid, while PAGE_SIZE is one byte past the end of the mapping and must be rejected. Skip the test when arena maps are not supported by the target architecture. This covers the off-by-one case in arena direct-value range checking. Signed-off-by: Dhiraj Shah --- Changes in v2: - Skip the test when BPF_MAP_TYPE_ARENA is unsupported. .../bpf/prog_tests/arena_direct_value.c | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tools/testing/selftests/bpf/prog_tests/arena_direct_value.c diff --git a/tools/testing/selftests/bpf/prog_tests/arena_direct_value.c b/tools/testing/selftests/bpf/prog_tests/arena_direct_value.c new file mode 100644 index 000000000000..d58790a66cc8 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/arena_direct_value.c @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#ifndef PAGE_SIZE +#include +#define PAGE_SIZE getpagesize() +#endif + +static int create_arena(void) +{ + LIBBPF_OPTS(bpf_map_create_opts, opts, + .map_flags = BPF_F_MMAPABLE, + ); + + return bpf_map_create(BPF_MAP_TYPE_ARENA, "arena", 0, 0, 1, &opts); +} + +static int load_direct_value_prog(int map_fd, int off) +{ + struct bpf_insn insns[] = { + BPF_LD_MAP_VALUE(BPF_REG_1, map_fd, off), + BPF_MOV64_IMM(BPF_REG_0, 0), + BPF_EXIT_INSN(), + }; + + return bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, NULL, "GPL", + insns, ARRAY_SIZE(insns), NULL); +} + +static void test_direct_value_boundary(void) +{ + void *area = MAP_FAILED; + int map_fd, prog_fd; + + map_fd = create_arena(); + if (map_fd < 0 && errno == EOPNOTSUPP) { + test__skip(); + return; + } + if (!ASSERT_OK_FD(map_fd, "create_arena")) + return; + + area = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, map_fd, 0); + if (!ASSERT_NEQ(area, MAP_FAILED, "arena_mmap")) + goto out; + + prog_fd = load_direct_value_prog(map_fd, PAGE_SIZE - 1); + if (ASSERT_OK_FD(prog_fd, "last_valid_byte")) + close(prog_fd); + + prog_fd = load_direct_value_prog(map_fd, PAGE_SIZE); + if (!ASSERT_LT(prog_fd, 0, "one_past_end")) + close(prog_fd); + +out: + if (area != MAP_FAILED) + munmap(area, PAGE_SIZE); + close(map_fd); +} + +void test_arena_direct_value(void) +{ + if (test__start_subtest("direct_value_boundary")) + test_direct_value_boundary(); +} -- 2.43.0