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

From: Joe Perches
Date: Tue Sep 26 2023 - 03:24:08 EST


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.