Re: [RFC 3/5] modules, x86: use vmalloc_exec for module core

From: Song Liu
Date: Fri Oct 07 2022 - 02:47:07 EST




> On Oct 6, 2022, at 4:38 PM, Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote:
>
> On Thu, Aug 18, 2022 at 03:42:16PM -0700, Song Liu wrote:
>> diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
>> index 100446ffdc1d..570af623e28f 100644
>> --- a/arch/x86/kernel/module.c
>> +++ b/arch/x86/kernel/module.c
>> @@ -229,6 +229,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
>> bool early = me->state == MODULE_STATE_UNFORMED;
>> void *(*write)(void *, const void *, size_t) = memcpy;
>>
>> + early = false;
>> if (!early) {
>> write = text_poke;
>> mutex_lock(&text_mutex);
>
> As per 88fc078a7a8f6 ("x86/module: Use text_poke() for late
> relocations") I'm curious why we have to take the live patching
> path now all the time?

Since vmalloc_exec returns read-only memory, we need text_poke()
for any operation to it.

Does this answer your question?

Song