[PATCH v3 14/16] modules: Support extended MODVERSIONS info

Sami Tolvanen samitolvanen at google.com
Fri Aug 16 06:33:15 AEST 2024


Hi Matt,

On Tue, Aug 6, 2024 at 9:25 PM Matthew Maurer <mmaurer at google.com> wrote:
>
[...]
> +void modversion_ext_start(const struct load_info *info,
> +                         struct modversion_info_ext *start)
> +{
> +       unsigned int crc_idx = info->index.vers_ext_crc;
> +       unsigned int name_idx = info->index.vers_ext_name;
> +       Elf_Shdr *sechdrs = info->sechdrs;
> +
> +       /*
> +        * Both of these fields are needed for this to be useful
> +        * Any future fields should be initialized to NULL if absent.
> +        */
> +       if ((crc_idx == 0) || (name_idx == 0))

nit: The extra parentheses are not necessary.

> +               start->remaining = 0;
> +
> +       start->crc = (const s32 *)sechdrs[crc_idx].sh_addr;
> +       start->name = (const char *)sechdrs[name_idx].sh_addr;
> +       start->remaining = sechdrs[crc_idx].sh_size / sizeof(*start->crc);
> +}

Is this missing an else condition or a return? Why set
start->remaining to zero and then proceed to assign a possibly invalid
value to it anyway?

Sami


More information about the Linuxppc-dev mailing list