Re: [PATCH] libkmod-elf: resolve CRC if module is built with MODULE_REL_CRCS

From: Yauheni Kaliuta
Date: Wed Jul 19 2017 - 15:30:23 EST


Hi, Ard!

>>>>> On Wed, 19 Jul 2017 20:10:17 +0100, Ard Biesheuvel wrote:

> On 19 July 2017 at 20:04, Yauheni Kaliuta <yauheni.kaliuta@xxxxxxxxxx> wrote:
>> Hi, Lucas!
>>
>>>>>>> On Wed, 19 Jul 2017 10:51:44 -0700, Lucas De Marchi wrote:
>> > On Wed, Jul 19, 2017 at 7:56 AM, Yauheni Kaliuta
>> > <yauheni.kaliuta@xxxxxxxxxx> wrote:
>> >> Normally exported symbol's crc is stored as absolute (SHN_ABS)
>> >> value of special named symbol __crc_<symbol name>.
>> >>
>> >> When the kernel and modules are built with the config option
>> >> CONFIG_MODULE_REL_CRCS, all the CRCs are put in a special section
>> >> and the __crc_<symbol name> symbols values are offsets in the
>> >> section. See patch description of the commit:
>> >>
>> >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=56067812d5b0e737ac2063e94a50f76b810d6ca3
>> >>
>> >> Add kmod support of this configuration.
>>
>> [...]
>>
>> > LGTM. I'll give this a try and apply.
>>
>> Thanks! I would also like to get some feedback from the kernel feature
>> author, Ard Biesheuvel, that this does not miss other usecases.
>>

> The patch looks correct to me. My only comment is that
> kmod_elf_resolve_crc() should probably return a uint32_t instead,
> given the size of a CRC32.

Well, it's a specific of the internal libkmod implementation. Both
struct kmod_modversion::crc and return value of elf_get_uint()
are uint64_t, but in the patch elf_get_uint() reads correct
sizeof(uint32_t) value from the ELF.

> In any case,

> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>

Thanks a lot!

--
WBR,
Yauheni Kaliuta