Re: [PATCH bpf-next v7 2/6] bpf: Attribute async callback instructions to verification roots

Eduard Zingerman <[email protected]>
Newsgroups org.kernel.vger.bpf
Message-ID <[email protected]>
On Sat, 2026-08-08 at 08:25 +0200, Kumar Kartikeya Dwivedi wrote:

...

> diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
> index 855f245e7468..9b76851dcf54 100644
> --- a/kernel/bpf/verifier.c
> +++ b/kernel/bpf/verifier.c
> @@ -18762,6 +18762,7 @@ static int do_check_subprogs(struct bpf_verifier_env *env)
>  	struct bpf_prog_aux *aux = env->prog->aux;
>  	struct bpf_func_info_aux *sub_aux;
>  	int i, ret, new_cnt;
> +	u32 insn_processed;
>  
>  	if (!aux->func_info)
>  		return 0;
> @@ -18780,9 +18781,11 @@ static int do_check_subprogs(struct bpf_verifier_env *env)
>  		if (!sub_aux->called || sub_aux->verified)
>  			continue;
>  
> +		insn_processed = env->insn_processed;
>  		env->insn_idx = env->subprog_info[i].start;
>  		WARN_ON_ONCE(env->insn_idx == 0);
>  		ret = do_check_common(env, i);
> +		env->subprog_info[i].insns_total = env->insn_processed - insn_processed;
>  		if (ret) {
>  			return ret;
>  		} else if (env->log.level & BPF_LOG_LEVEL) {
> @@ -18809,10 +18812,12 @@ static int do_check_subprogs(struct bpf_verifier_env *env)
>  
>  static int do_check_main(struct bpf_verifier_env *env)
>  {
> +	u32 insn_processed = env->insn_processed;
>  	int ret;
>  
>  	env->insn_idx = 0;
>  	ret = do_check_common(env, 0);
> +	env->subprog_info[0].insns_total = env->insn_processed - insn_processed;

Let's move this accounting inside do_check_common().
Also, having a comment like:

/*
 * The override is needed to account for async subprograms,
 * which are verified with their own set of stack frames and
 * thus are not accounted as callees by account_current_path().
 * Accumulate their total counts as total counts of the main
 * or global subprog hosting the async call.
 */

would be helpful.

>  	if (!ret)
>  		env->prog->aux->stack_depth = env->subprog_info[0].stack_depth;
>  	return ret;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.