Re: [PATCH] modpost: Optimize symbol search from linear to binary search

From: Masahiro Yamada
Date: Tue Sep 26 2023 - 05:57:08 EST


On Tue, Sep 26, 2023 at 4:24 PM Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> On Tue, 2023-09-26 at 15:46 +0900, Masahiro Yamada wrote:
> > On Tue, Sep 26, 2023 at 5:59 AM Jack Brennen <jbrennen@xxxxxxxxxx> wrote:
> >
> > > +Elf_Sym *symsearch_find_nearest(struct elf_info *elf, Elf_Addr addr,
> > > + unsigned int secndx, bool allow_negative,
> > > + Elf_Addr min_distance)
> > > +{
> > > + size_t hi = elf->symsearch->table_size;
> > > + size_t lo = 0;
> > > + struct syminfo *table = elf->symsearch->table;
> > > + struct syminfo target;
> > > +
> > > + target.addr = addr;
> > > + target.section_index = secndx;
> > > + target.symbol_index = ~0; /* compares greater than any actual index */
> > > + while (hi > lo) {
> > > + size_t mid = lo + (hi-lo)/2; /* Avoids potential overflow */
> > > +
> > > + if (syminfo_compare(&table[mid], &target) > 0)
> > > + hi = mid;
> > > + else
> > > + lo = mid+1;
> >
> > My preference is "low = mid + 1" over "low = mid+1"
> >
> > Documentation/process/coding-style.rst suggests spaces
> > around binary operators.
> >
> > "
> > Use one space around (on each side of) most binary and ternary operators,
> > such as any of these::
> >
> > = + - < > * / % | & ^ <= >= == != ? :
> > "
> >
> > I can see the corresponding line in the checkpatch tool:
> >
> > https://github.com/torvalds/linux/blob/v6.5/scripts/checkpatch.pl#L5330
> >
> >
> > I wonder why the checkpatch did not detect it.
> >
> > Maybe, Joe Perches may know the reason.
>
> checkpatch requires --strict to emit that message.
>




Ah, now I see it. I learned a new thing today.



CHECK: spaces preferred around that '+' (ctx:VxV)
#466: FILE: scripts/mod/symsearch.c:172:
+ lo = mid+1;
^







--
Best Regards
Masahiro Yamada