On Thu, Sep 17, 2026 at 10:27:32AM -0700, Kees Cook wrote:
> On Thu, Sep 17, 2026 at 05:06:12PM +0100, Lorenzo Stoakes (ARM) wrote:
> > diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
> > index 494852ade6d8..350d118c3b9e 100644
> > --- a/scripts/kallsyms.c
> > +++ b/scripts/kallsyms.c
> > @@ -58,12 +58,47 @@ static unsigned int table_size, table_cnt;
> > static int all_symbols;
> > static int pc_relative;
> >
> > +/* A dynamic array of symbols, encoded by symbol index. */
> > +struct sym_arr {
> > + unsigned int *sym_indexes;
> > + unsigned int cnt, cap;
> > +};
> > +
> > static int token_profit[0x10000];
> > +static struct sym_arr token_syms[0x10000];
>
> Nit: since you're refactoring too, can 0x10000 be a #define so it's not
> open-coded 3 places? (find_best_token() uses the value too, though
> arguably it should actually just use ARRAY_SIZE(token_profit) instead).
Sure, will do!
And yeah ARRAY_SIZE() makes sense there also.
>
> > [...]
> > -static void compress_symbols(const unsigned char *str, int idx)
> > +static void compress_symbols(const unsigned char *str, int compressed_chr)
> > {
> > - unsigned int i, len, size;
> > + const unsigned int token_idx = sym_token_index(str, 0);
> > + struct sym_arr *arr = &token_syms[token_idx];
> > + unsigned int sym_idx, j, len, size;
> > unsigned char *p1, *p2;
> >
> > - for (i = 0; i < table_cnt; i++) {
> > + /* Iterate through all symbols this token is found in and compress. */
> > + for (j = 0; j < arr->cnt; j++) {
> > + sym_idx = arr->sym_indexes[j];
> >
> > - len = table[i]->len;
> > - p1 = table[i]->sym;
> > + len = table[sym_idx]->len;
> > + p1 = table[sym_idx]->sym;
> >
> > - /* find the token on the symbol */
>
> Why drop this comment? It's a little redundant to "find_token", but I
> always question comment _removal_ when it's not solving an inaccuracy.
Sometimes I lose track which bits are mine/the LLM's, but I don't love
comments that don't add all that much, and I also berate the LLM about
writing the literally worse comments I've ever seen in my life so could
have been either me or it...
Anyway, will restore!
>
> > [...]
> > @@ -536,11 +643,14 @@ static void compress_symbols(const unsigned char
> > *str, int idx)
> >
> > } while (p2);
> >
> > - table[i]->len = len;
> > + table[sym_idx]->len = len;
> >
> > - /* increase the counts for this symbol's new tokens */
>
> Same question here: the comment is still valid?
Ack will restore!
>
> Otherwise, looks good to me.
>
> Reviewed-by: Kees Cook <[email protected]>
Thanks!
>
>
> --
> Kees Cook
--
Cheers, Lorenzo