* [PATCH bpf-next v4 0/2] bpf: Reject offset refcount acquire arguments
@ 2026-06-23 6:11 Yiyang Chen
2026-06-23 6:11 ` [PATCH bpf-next v4 1/2] " Yiyang Chen
2026-06-23 6:11 ` [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
0 siblings, 2 replies; 8+ messages in thread
From: Yiyang Chen @ 2026-06-23 6:11 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: Yiyang Chen, John Fastabend, Martin KaFai Lau, Song Liu,
Yonghong Song, Jiri Olsa, Emil Tsalapatis, Shuah Khan,
Viktor Malik, Leon Hwang, Dave Marchevsky, bpf, linux-kselftest,
linux-kernel
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 handles the zero fixed-offset requirement in the existing
check_func_arg_reg_off() / __check_ptr_off_reg() path without consuming a
bpf_type_flag bit.
Patch 2 adds a rejected direct list-node case.
Changes from v3:
- Add Eduard's Acked-by to patch 1.
- Drop the redundant rbtree selftest case; the list case exercises the same
refcount-acquire fixed-offset rejection path.
- Trim the selftest commit message and remove the selftest Fixes tag.
Changes from v2:
- Avoid adding a new bpf_type_flag bit.
- Carry the refcount-acquire zero fixed-offset requirement with an
internal check_func_arg_reg_off() parameter.
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.
- Rebase to bpf-next master a975094bf98c.
v3: https://lore.kernel.org/bpf/cover.1781979133.git.chenyy23@mails.tsinghua.edu.cn/
v2: https://lore.kernel.org/bpf/cover.1781963957.git.chenyy23@mails.tsinghua.edu.cn/
v1: https://lore.kernel.org/bpf/cover.1781852308.git.chenyy23@mails.tsinghua.edu.cn/
Yiyang Chen (2):
bpf: Reject offset refcount acquire arguments
selftests/bpf: Cover refcount acquire node offsets
kernel/bpf/verifier.c | 32 +++++++++++------
.../bpf/progs/refcounted_kptr_fail.c | 34 +++++++++++++++++++
2 files changed, 56 insertions(+), 10 deletions(-)
base-commit: a975094bf98ca97be9146f9d3b5681a6f9cf5ce3
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH bpf-next v4 1/2] bpf: Reject offset refcount acquire arguments
2026-06-23 6:11 [PATCH bpf-next v4 0/2] bpf: Reject offset refcount acquire arguments Yiyang Chen
@ 2026-06-23 6:11 ` Yiyang Chen
2026-06-23 7:01 ` bot+bpf-ci
2026-06-25 21:30 ` Yonghong Song
2026-06-23 6:11 ` [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
1 sibling, 2 replies; 8+ messages in thread
From: Yiyang Chen @ 2026-06-23 6:11 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: Yiyang Chen, John Fastabend, Martin KaFai Lau, Song Liu,
Yonghong Song, Jiri Olsa, Emil Tsalapatis, Shuah Khan,
Viktor Malik, Leon Hwang, Dave Marchevsky, bpf, linux-kselftest,
linux-kernel
bpf_refcount_acquire() increments the refcount at the caller-supplied
pointer plus the refcount field offset, then returns the caller-supplied
pointer unchanged.
The verifier records the return value as a base pointer to the refcounted
object.
bpf_list_pop_front() and bpf_rbtree_remove() can return embedded
graph-node pointers as PTR_TO_BTF_ID | MEM_ALLOC with a fixed offset equal
to the node field offset. Passing such a pointer directly to
bpf_refcount_acquire() currently passes the refcounted-kptr type check.
That makes the runtime operation start from base + node_off while the
verifier models the returned pointer as the object base.
Require refcount-acquire arguments to have zero fixed offset by carrying
the requirement through check_func_arg_reg_off() to __check_ptr_off_reg().
Programs can still acquire a refcount from a graph-node-derived pointer
after normalizing it with container_of().
Fixes: 7c50b1cb76aca ("bpf: Add bpf_refcount_acquire kfunc")
Signed-off-by: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
---
kernel/bpf/verifier.c | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 2abc79dbf..f65eff28e 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -7990,9 +7990,10 @@ reg_find_field_offset(const struct bpf_reg_state *reg, s32 off, u32 fields)
return field;
}
-static int check_func_arg_reg_off(struct bpf_verifier_env *env,
- const struct bpf_reg_state *reg, argno_t argno,
- enum bpf_arg_type arg_type)
+static int __check_func_arg_reg_off(struct bpf_verifier_env *env,
+ const struct bpf_reg_state *reg, argno_t argno,
+ enum bpf_arg_type arg_type,
+ bool btf_id_fixed_off_ok)
{
u32 type = reg->type;
@@ -8049,12 +8050,11 @@ static int check_func_arg_reg_off(struct bpf_verifier_env *env,
case PTR_TO_BTF_ID | MEM_ALLOC | NON_OWN_REF | MEM_RCU:
/* When referenced PTR_TO_BTF_ID is passed to release function,
* its fixed offset must be 0. In the other cases, fixed offset
- * can be non-zero. This was already checked above. So pass
- * fixed_off_ok as true to allow fixed offset for all other
- * cases. var_off always must be 0 for PTR_TO_BTF_ID, hence we
- * still need to do checks instead of returning.
+ * can be non-zero unless the caller requires otherwise.
+ * var_off always must be 0 for PTR_TO_BTF_ID, hence we still
+ * need to do checks instead of returning.
*/
- return __check_ptr_off_reg(env, reg, argno, true);
+ return __check_ptr_off_reg(env, reg, argno, btf_id_fixed_off_ok);
case PTR_TO_CTX:
/*
* Allow fixed and variable offsets for syscall context, but
@@ -8070,6 +8070,13 @@ static int check_func_arg_reg_off(struct bpf_verifier_env *env,
}
}
+static int check_func_arg_reg_off(struct bpf_verifier_env *env,
+ const struct bpf_reg_state *reg, argno_t argno,
+ enum bpf_arg_type arg_type)
+{
+ return __check_func_arg_reg_off(env, reg, argno, arg_type, true);
+}
+
static int check_arg_const_str(struct bpf_verifier_env *env,
struct bpf_reg_state *reg, argno_t argno)
{
@@ -11941,6 +11948,7 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
enum bpf_arg_type arg_type = ARG_DONTCARE;
argno_t argno = argno_from_arg(i + 1);
int regno = reg_from_argno(argno);
+ bool btf_id_fixed_off_ok = true;
u32 ref_id, type_size;
bool is_ret_buf_sz = false;
int kf_arg_type;
@@ -12114,7 +12122,6 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
case KF_ARG_PTR_TO_MEM:
case KF_ARG_PTR_TO_MEM_SIZE:
case KF_ARG_PTR_TO_CALLBACK:
- case KF_ARG_PTR_TO_REFCOUNTED_KPTR:
case KF_ARG_PTR_TO_CONST_STR:
case KF_ARG_PTR_TO_WORKQUEUE:
case KF_ARG_PTR_TO_TIMER:
@@ -12128,6 +12135,10 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
case KF_ARG_PTR_TO_CTX:
arg_type = ARG_PTR_TO_CTX;
break;
+ case KF_ARG_PTR_TO_REFCOUNTED_KPTR:
+ arg_type = ARG_PTR_TO_BTF_ID;
+ btf_id_fixed_off_ok = false;
+ break;
default:
verifier_bug(env, "unknown kfunc arg type %d", kf_arg_type);
return -EFAULT;
@@ -12135,7 +12146,8 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
if (regno == meta->release_regno)
arg_type |= OBJ_RELEASE;
- ret = check_func_arg_reg_off(env, reg, argno, arg_type);
+ ret = __check_func_arg_reg_off(env, reg, argno, arg_type,
+ btf_id_fixed_off_ok);
if (ret < 0)
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets
2026-06-23 6:11 [PATCH bpf-next v4 0/2] bpf: Reject offset refcount acquire arguments Yiyang Chen
2026-06-23 6:11 ` [PATCH bpf-next v4 1/2] " Yiyang Chen
@ 2026-06-23 6:11 ` Yiyang Chen
2026-06-23 21:50 ` Emil Tsalapatis
2026-06-25 21:39 ` Yonghong Song
1 sibling, 2 replies; 8+ messages in thread
From: Yiyang Chen @ 2026-06-23 6:11 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: Yiyang Chen, John Fastabend, Martin KaFai Lau, Song Liu,
Yonghong Song, Jiri Olsa, Emil Tsalapatis, Shuah Khan,
Viktor Malik, Leon Hwang, Dave Marchevsky, bpf, linux-kselftest,
linux-kernel
Add regression coverage for bpf_refcount_acquire() on graph-node-derived
pointers.
The rejected case passes a popped list node pointer directly to
bpf_refcount_acquire(), which must fail because the pointer carries a
non-zero fixed offset.
Signed-off-by: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
---
.../bpf/progs/refcounted_kptr_fail.c | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c b/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
index 7247a20c0..024ef2aae 100644
--- a/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
+++ b/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
@@ -13,12 +13,20 @@ struct node_acquire {
struct bpf_refcount refcount;
};
+struct node_refcounted {
+ long key;
+ struct bpf_list_node list;
+ struct bpf_refcount refcount;
+};
+
extern void bpf_rcu_read_lock(void) __ksym;
extern void bpf_rcu_read_unlock(void) __ksym;
#define private(name) SEC(".data." #name) __hidden __attribute__((aligned(8)))
private(A) struct bpf_spin_lock glock;
private(A) struct bpf_rb_root groot __contains(node_acquire, node);
+private(B) struct bpf_spin_lock lock;
+private(B) struct bpf_list_head head __contains(node_refcounted, list);
static bool less(struct bpf_rb_node *a, const struct bpf_rb_node *b)
{
@@ -93,6 +101,32 @@ long rbtree_refcounted_node_ref_escapes_owning_input(void *ctx)
return 0;
}
+SEC("?tc")
+__failure __msg("dereference of modified ptr_ ptr R1")
+long refcount_acquire_list_node_offset(void *ctx)
+{
+ struct node_refcounted *node, *base, *ref;
+ struct bpf_list_node *list_node;
+
+ node = bpf_obj_new(typeof(*node));
+ if (!node)
+ return 1;
+
+ bpf_spin_lock(&lock);
+ bpf_list_push_front(&head, &node->list);
+ list_node = bpf_list_pop_front(&head);
+ bpf_spin_unlock(&lock);
+ if (!list_node)
+ return 2;
+
+ base = container_of(list_node, struct node_refcounted, list);
+ ref = bpf_refcount_acquire(list_node);
+ if (ref)
+ bpf_obj_drop(ref);
+ bpf_obj_drop(base);
+ return 0;
+}
+
SEC("?fentry.s/" SYS_PREFIX "sys_getpgid")
__failure __msg("function calls are not allowed while holding a lock")
int BPF_PROG(rbtree_fail_sleepable_lock_across_rcu,
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v4 1/2] bpf: Reject offset refcount acquire arguments
2026-06-23 6:11 ` [PATCH bpf-next v4 1/2] " Yiyang Chen
@ 2026-06-23 7:01 ` bot+bpf-ci
2026-06-23 21:52 ` Emil Tsalapatis
2026-06-25 21:30 ` Yonghong Song
1 sibling, 1 reply; 8+ messages in thread
From: bot+bpf-ci @ 2026-06-23 7:01 UTC (permalink / raw)
To: chenyy23, ast, daniel, andrii, eddyz87, memxor
Cc: chenyy23, john.fastabend, martin.lau, song, yonghong.song, jolsa,
emil, shuah, vmalik, leon.hwang, davemarchevsky, bpf,
linux-kselftest, linux-kernel, ast, andrii, daniel, martin.lau,
eddyz87, yonghong.song, clm, ihor.solodrai
[-- Attachment #1: Type: text/plain, Size: 1038 bytes --]
> diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
> index 2abc79dbf281..f65eff28ecd2 100644
> --- a/kernel/bpf/verifier.c
> +++ b/kernel/bpf/verifier.c
[ ... ]
> @@ -12135,7 +12146,8 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
>
> if (regno == meta->release_regno)
> arg_type |= OBJ_RELEASE;
> - ret = check_func_arg_reg_off(env, reg, argno, arg_type);
> + ret = __check_func_arg_reg_off(env, reg, argno, arg_type,
> + btf_id_fixed_off_ok);
This isn't a bug, but does this call need to be split across two lines?
The line length limit is 100 characters, and it looks like it would fit
on a single line:
ret = __check_func_arg_reg_off(env, reg, argno, arg_type, btf_id_fixed_off_ok);
> if (ret < 0)
> return ret;
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/28007209948
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets
2026-06-23 6:11 ` [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
@ 2026-06-23 21:50 ` Emil Tsalapatis
2026-06-25 21:39 ` Yonghong Song
1 sibling, 0 replies; 8+ messages in thread
From: Emil Tsalapatis @ 2026-06-23 21:50 UTC (permalink / raw)
To: Yiyang Chen, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: John Fastabend, Martin KaFai Lau, Song Liu, Yonghong Song,
Jiri Olsa, Emil Tsalapatis, Shuah Khan, Viktor Malik, Leon Hwang,
Dave Marchevsky, bpf, linux-kselftest, linux-kernel
On Tue Jun 23, 2026 at 2:11 AM EDT, Yiyang Chen wrote:
> Add regression coverage for bpf_refcount_acquire() on graph-node-derived
> pointers.
>
> The rejected case passes a popped list node pointer directly to
> bpf_refcount_acquire(), which must fail because the pointer carries a
> non-zero fixed offset.
>
> Signed-off-by: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
Reviewed-by: Emil Tsalapatis <emil@etsalapatis.com>
> ---
> .../bpf/progs/refcounted_kptr_fail.c | 34 +++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c b/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
> index 7247a20c0..024ef2aae 100644
> --- a/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
> +++ b/tools/testing/selftests/bpf/progs/refcounted_kptr_fail.c
> @@ -13,12 +13,20 @@ struct node_acquire {
> struct bpf_refcount refcount;
> };
>
> +struct node_refcounted {
> + long key;
> + struct bpf_list_node list;
> + struct bpf_refcount refcount;
> +};
> +
> extern void bpf_rcu_read_lock(void) __ksym;
> extern void bpf_rcu_read_unlock(void) __ksym;
>
> #define private(name) SEC(".data." #name) __hidden __attribute__((aligned(8)))
> private(A) struct bpf_spin_lock glock;
> private(A) struct bpf_rb_root groot __contains(node_acquire, node);
> +private(B) struct bpf_spin_lock lock;
> +private(B) struct bpf_list_head head __contains(node_refcounted, list);
>
> static bool less(struct bpf_rb_node *a, const struct bpf_rb_node *b)
> {
> @@ -93,6 +101,32 @@ long rbtree_refcounted_node_ref_escapes_owning_input(void *ctx)
> return 0;
> }
>
> +SEC("?tc")
> +__failure __msg("dereference of modified ptr_ ptr R1")
> +long refcount_acquire_list_node_offset(void *ctx)
> +{
> + struct node_refcounted *node, *base, *ref;
> + struct bpf_list_node *list_node;
> +
> + node = bpf_obj_new(typeof(*node));
> + if (!node)
> + return 1;
> +
> + bpf_spin_lock(&lock);
> + bpf_list_push_front(&head, &node->list);
> + list_node = bpf_list_pop_front(&head);
> + bpf_spin_unlock(&lock);
> + if (!list_node)
> + return 2;
> +
> + base = container_of(list_node, struct node_refcounted, list);
> + ref = bpf_refcount_acquire(list_node);
> + if (ref)
> + bpf_obj_drop(ref);
> + bpf_obj_drop(base);
> + return 0;
> +}
> +
> SEC("?fentry.s/" SYS_PREFIX "sys_getpgid")
> __failure __msg("function calls are not allowed while holding a lock")
> int BPF_PROG(rbtree_fail_sleepable_lock_across_rcu,
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v4 1/2] bpf: Reject offset refcount acquire arguments
2026-06-23 7:01 ` bot+bpf-ci
@ 2026-06-23 21:52 ` Emil Tsalapatis
0 siblings, 0 replies; 8+ messages in thread
From: Emil Tsalapatis @ 2026-06-23 21:52 UTC (permalink / raw)
To: bot+bpf-ci, chenyy23, ast, daniel, andrii, eddyz87, memxor
Cc: john.fastabend, martin.lau, song, yonghong.song, jolsa, emil,
shuah, vmalik, leon.hwang, davemarchevsky, bpf, linux-kselftest,
linux-kernel, martin.lau, clm, ihor.solodrai
On Tue Jun 23, 2026 at 3:01 AM EDT, bot+bpf-ci wrote:
>> diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
>> index 2abc79dbf281..f65eff28ecd2 100644
>> --- a/kernel/bpf/verifier.c
>> +++ b/kernel/bpf/verifier.c
>
> [ ... ]
>
>> @@ -12135,7 +12146,8 @@ static int check_kfunc_args(struct bpf_verifier_env *env, struct bpf_kfunc_call_
>>
>> if (regno == meta->release_regno)
>> arg_type |= OBJ_RELEASE;
>> - ret = check_func_arg_reg_off(env, reg, argno, arg_type);
>> + ret = __check_func_arg_reg_off(env, reg, argno, arg_type,
>> + btf_id_fixed_off_ok);
>
> This isn't a bug, but does this call need to be split across two lines?
> The line length limit is 100 characters, and it looks like it would fit
> on a single line:
Bot is right, we don't split diagnostics across lines.
>
> ret = __check_func_arg_reg_off(env, reg, argno, arg_type, btf_id_fixed_off_ok);
>
>> if (ret < 0)
>> return ret;
>
>
> ---
> AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
> See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
>
> CI run summary: https://github.com/kernel-patches/bpf/actions/runs/28007209948
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v4 1/2] bpf: Reject offset refcount acquire arguments
2026-06-23 6:11 ` [PATCH bpf-next v4 1/2] " Yiyang Chen
2026-06-23 7:01 ` bot+bpf-ci
@ 2026-06-25 21:30 ` Yonghong Song
1 sibling, 0 replies; 8+ messages in thread
From: Yonghong Song @ 2026-06-25 21:30 UTC (permalink / raw)
To: Yiyang Chen, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: John Fastabend, Martin KaFai Lau, Song Liu, Jiri Olsa,
Emil Tsalapatis, Shuah Khan, Viktor Malik, Leon Hwang,
Dave Marchevsky, bpf, linux-kselftest, linux-kernel
On 6/22/26 11:11 PM, Yiyang Chen wrote:
> bpf_refcount_acquire() increments the refcount at the caller-supplied
> pointer plus the refcount field offset, then returns the caller-supplied
> pointer unchanged.
>
> The verifier records the return value as a base pointer to the refcounted
> object.
>
> bpf_list_pop_front() and bpf_rbtree_remove() can return embedded
> graph-node pointers as PTR_TO_BTF_ID | MEM_ALLOC with a fixed offset equal
> to the node field offset. Passing such a pointer directly to
> bpf_refcount_acquire() currently passes the refcounted-kptr type check.
>
> That makes the runtime operation start from base + node_off while the
> verifier models the returned pointer as the object base.
>
> Require refcount-acquire arguments to have zero fixed offset by carrying
> the requirement through check_func_arg_reg_off() to __check_ptr_off_reg().
> Programs can still acquire a refcount from a graph-node-derived pointer
> after normalizing it with container_of().
>
> Fixes: 7c50b1cb76aca ("bpf: Add bpf_refcount_acquire kfunc")
> Signed-off-by: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
> Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets
2026-06-23 6:11 ` [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
2026-06-23 21:50 ` Emil Tsalapatis
@ 2026-06-25 21:39 ` Yonghong Song
1 sibling, 0 replies; 8+ messages in thread
From: Yonghong Song @ 2026-06-25 21:39 UTC (permalink / raw)
To: Yiyang Chen, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: John Fastabend, Martin KaFai Lau, Song Liu, Jiri Olsa,
Emil Tsalapatis, Shuah Khan, Viktor Malik, Leon Hwang,
Dave Marchevsky, bpf, linux-kselftest, linux-kernel
On 6/22/26 11:11 PM, Yiyang Chen wrote:
> Add regression coverage for bpf_refcount_acquire() on graph-node-derived
> pointers.
>
> The rejected case passes a popped list node pointer directly to
> bpf_refcount_acquire(), which must fail because the pointer carries a
> non-zero fixed offset.
>
> Signed-off-by: Yiyang Chen <chenyy23@mails.tsinghua.edu.cn>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-06-25 21:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-23 6:11 [PATCH bpf-next v4 0/2] bpf: Reject offset refcount acquire arguments Yiyang Chen
2026-06-23 6:11 ` [PATCH bpf-next v4 1/2] " Yiyang Chen
2026-06-23 7:01 ` bot+bpf-ci
2026-06-23 21:52 ` Emil Tsalapatis
2026-06-25 21:30 ` Yonghong Song
2026-06-23 6:11 ` [PATCH bpf-next v4 2/2] selftests/bpf: Cover refcount acquire node offsets Yiyang Chen
2026-06-23 21:50 ` Emil Tsalapatis
2026-06-25 21:39 ` Yonghong Song
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox