Hi Matt, On Tue, Aug 6, 2024 at 9:25 PM Matthew Maurer <mmaurer@xxxxxxxxxx> 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