From: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Eduard Zingerman <eddyz87@gmail.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>
Cc: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>,
John Fastabend <john.fastabend@gmail.com>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
Jiri Olsa <jolsa@kernel.org>,
Emil Tsalapatis <emil@etsalapatis.com>,
Shuah Khan <shuah@kernel.org>, Viktor Malik <vmalik@redhat.com>,
Leon Hwang <leon.hwang@linux.dev>,
Dave Marchevsky <davemarchevsky@fb.com>,
bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH bpf-next v2 0/2] bpf: Reject offset refcount acquire arguments
Date: Sat, 20 Jun 2026 15:04:16 +0000 [thread overview]
Message-ID: <cover.1781963957.git.chenyy23@mails.tsinghua.edu.cn> (raw)
In-Reply-To: <cover.1781852308.git.chenyy23@mails.tsinghua.edu.cn>
bpf_refcount_acquire() is modeled as returning a refcounted allocation
base, but it currently accepts PTR_TO_BTF_ID | MEM_ALLOC arguments whose
offset already points at an embedded graph node returned from a list or
rbtree operation.
At runtime the kfunc starts from the supplied pointer and adds the type's
refcount offset. With a graph-node pointer, that starts from base +
node_off, while the verifier treats the returned pointer as the allocation
base. Reject non-zero fixed-offset arguments to keep the runtime operation
and the verifier model aligned.
Programs that pop graph nodes can still acquire a reference after
normalizing the node pointer with container_of().
Patch 1 adds a PTR_ZERO_OFF argument flag and handles the zero fixed-offset
requirement through check_func_arg_reg_off() / __check_ptr_off_reg().
Patch 2 adds rejected direct list and rbtree node cases.
Changes from v1:
- Move zero fixed-offset enforcement into check_func_arg_reg_off() /
__check_ptr_off_reg(), as suggested by Eduard.
- Drop the positive container_of() selftest case.
- Remove the stale bpf_obj_drop() after bpf_list_push_front(), since the
pushed reference is consumed even when the verifier explores the error
branch.
- Add a Fixes tag to the selftest patch.
- Rebase to bpf-next master a975094bf98c.
Yiyang Chen (2):
bpf: Reject offset refcount acquire arguments
selftests/bpf: Cover refcount acquire node offsets
include/linux/bpf.h | 3 +
kernel/bpf/verifier.c | 18 +++--
.../bpf/progs/refcounted_kptr_fail.c | 77 +++++++++++++++++++
3 files changed, 91 insertions(+), 7 deletions(-)
base-commit: a975094bf98ca97be9146f9d3b5681a6f9cf5ce3
--
2.34.1
next prev parent reply other threads:[~2026-06-20 15:04 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-19 7:59 [PATCH bpf-next 0/2] bpf: Reject offset refcount acquire arguments Yiyang Chen
2026-06-19 7:59 ` [PATCH bpf-next 1/2] " Yiyang Chen
2026-06-19 19:28 ` Eduard Zingerman
2026-06-19 7:59 ` [PATCH bpf-next 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
2026-06-19 8:30 ` sashiko-bot
2026-06-19 8:47 ` bot+bpf-ci
2026-06-19 19:30 ` Eduard Zingerman
2026-06-20 15:04 ` Yiyang Chen [this message]
2026-06-20 15:04 ` [PATCH bpf-next v2 1/2] bpf: Reject offset refcount acquire arguments Yiyang Chen
2026-06-20 17:48 ` Alexei Starovoitov
2026-06-20 15:04 ` [PATCH bpf-next v2 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
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=cover.1781963957.git.chenyy23@mails.tsinghua.edu.cn \
--to=chenyy23@mails.tsinghua.edu.cn \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davemarchevsky@fb.com \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=leon.hwang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=vmalik@redhat.com \
--cc=yonghong.song@linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.