All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Chaignon <paul.chaignon@gmail.com>
To: Eduard Zingerman <eddyz87@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>
Subject: Re: [PATCH bpf-next 1/2] bpf: Report maximum combined stack depth
Date: Wed, 13 May 2026 16:06:53 +0200	[thread overview]
Message-ID: <agSFfSBjRer5vyGi@mail.gmail.com> (raw)
In-Reply-To: <2a6d16baade6d1d22ebda367c67f49ad9aeb4dc5.camel@gmail.com>

On Tue, May 12, 2026 at 02:53:33PM -0700, Eduard Zingerman wrote:
> On Tue, 2026-05-12 at 19:19 +0200, Paul Chaignon wrote:

[...]

> > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
> > index 11054ad89c14..896dbb4515d7 100644
> > --- a/kernel/bpf/verifier.c
> > +++ b/kernel/bpf/verifier.c
> > @@ -5045,6 +5045,8 @@ static int check_max_stack_depth_subprog(struct bpf_verifier_env *env, int idx,
> >  		}
> >  	} else {
> >  		depth += subprog_depth;
> > +		if (depth > env->max_stack_depth)
> > +			env->max_stack_depth = depth;
> >  		if (depth > MAX_BPF_STACK) {
> >  			total = 0;
> >  			for (tmp = idx; tmp >= 0; tmp = dinfo[tmp].caller)
> > @@ -5185,6 +5187,8 @@ static int check_max_stack_depth(struct bpf_verifier_env *env)
> >  	if (priv_stack_mode == PRIV_STACK_UNKNOWN)
> >  		priv_stack_mode = bpf_enable_priv_stack(env->prog);
> >  
> > +	env->max_stack_depth = env->subprog_info[0].stack_depth;
> > +
> 
> I think this line is redundant, the loop below would call
> check_max_stack_depth_subprog() for the main subprogram anyway.
> Additionally it does not round the value same way
> check_max_stack_depth_subprog() does. Also note that if main
> subprogram uses private stack it's depth is omitted in cumulative
> depth computation.

Yep, you're right. I had misread the loop below. I also need to update
env->max_stack_depth in the private-stack case in
check_max_stack_depth_subprog(). I'll add a selftest to cover that in
the v2.

> 
> >  	/* All async_cb subprogs use normal kernel stack. If a particular
> >  	 * subprog appears in both main prog and async_cb subtree, that
> >  	 * subprog will use normal kernel stack to avoid potential nesting.
> > @@ -18289,7 +18293,7 @@ static void print_verification_stats(struct bpf_verifier_env *env)
> >  		verbose(env, "stack depth %d", env->subprog_info[0].stack_depth);
> >  		for (i = 1; i < subprog_cnt; i++)
> >  			verbose(env, "+%d", env->subprog_info[i].stack_depth);
> > -		verbose(env, "\n");
> > +		verbose(env, " max %d\n", env->max_stack_depth);
> >  		verbose(env, "insns processed %d", env->subprog_info[0].insn_processed);
> >  		for (i = 1; i < subprog_cnt; i++)
> >  			if (bpf_subprog_is_global(env, i))
> 
> Maybe also add a veristat metric for this value?

Ack, makes sense.


  reply	other threads:[~2026-05-13 14:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 17:19 [PATCH bpf-next 1/2] bpf: Report maximum combined stack depth Paul Chaignon
2026-05-12 17:19 ` [PATCH bpf-next 2/2] selftests/bpf: Test reported max " Paul Chaignon
2026-05-12 21:53 ` [PATCH bpf-next 1/2] bpf: Report maximum combined " Eduard Zingerman
2026-05-13 14:06   ` Paul Chaignon [this message]
2026-05-13 23:47 ` sashiko-bot

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=agSFfSBjRer5vyGi@mail.gmail.com \
    --to=paul.chaignon@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=memxor@gmail.com \
    /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.