Re: [PATCH bpf-next v7 4/6] selftests/bpf: Adjust veristat stack depth parsing
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: > The verifier now reports instruction and stack depth statistics using > uniform "subprog <id> (<name>) <kind>" records. Subprogram 0 is classified > as main, while other records are global or static. Each record carries > insns_self, insns_total, and stack depth. > > Teach veristat to parse the new records while retaining support for the > legacy one-line stack depth format used by older kernels. Skip both > instruction counts and match only through the stack value so fields can > still be appended without breaking parsing. > > Increase the bounded backward scan so it can include all 256 per-subprogram > records. > > Zero-initialize the legacy stack buffer because logs using the new format do > not populate it before the trailing tokenizer loop. This makes the loop see > an empty string instead of reading uninitialized data. > > Signed-off-by: Kumar Kartikeya Dwivedi <[email protected]> > --- Acked-by: Eduard Zingerman <[email protected]> > @@ -1025,11 +1027,17 @@ static int parse_verif_log(char * const buf, size_t buf_sz, struct verif_stats * > &s->stats[MARK_READ_MAX_LEN])) > continue; > > + if (sscanf(cur, "stack depth max %ld", &s->stats[MAX_STACK]) == 1) > + continue; > + if (sscanf(cur, "subprog %*d %*s %*s insns_self %*d insns_total %*d stack %ld", &sub_stack) == 1) { > + s->stats[STACK] += sub_stack; > + continue; > + } Nit: a comment about why two different formats are matched would be helpful. > if (2 == sscanf(cur, "stack depth %511s max %ld", stack, &s->stats[MAX_STACK])) > continue; > } > while ((token = strtok_r(cnt++ ? NULL : stack, "+", &state))) { > - if (sscanf(token, "%d", &sub_stack) == 0) > + if (sscanf(token, "%ld", &sub_stack) == 0) > break; > s->stats[STACK] += sub_stack; > }