diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 11e54dd8b6ddcc..0bcc6d4b1b2f11 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -10129,6 +10129,16 @@ static bool is_kfunc_ret_null(struct bpf_kfunc_call_arg_meta *meta) return meta->kfunc_flags & KF_RET_NULL; } +static bool is_kfunc_ret_null(struct bpf_kfunc_call_arg_meta *meta) +{ + if (meta->func_id == special_kfunc_list[KF_bpf_refcount_acquire_impl] && + meta->arg_owning_ref) { + return false; + } + + return meta->kfunc_flags & KF_RET_NULL; +} + static bool is_kfunc_bpf_rcu_read_lock(struct bpf_kfunc_call_arg_meta *meta) { return meta->func_id == special_kfunc_list[KF_bpf_rcu_read_lock];