Re: [PATCH 09/23] x86, kaiser: map dynamically-allocated LDTs

From: Andy Lutomirski
Date: Thu Nov 23 2017 - 15:13:11 EST


On Thu, Nov 23, 2017 at 11:42 AM, Eric Biggers <ebiggers3@xxxxxxxxx> wrote:
>> diff -puN arch/x86/kernel/ldt.c~kaiser-user-map-new-ldts arch/x86/kernel/ldt.c
>> --- a/arch/x86/kernel/ldt.c~kaiser-user-map-new-ldts 2017-11-22 15:45:49.059619739 -0800
>> +++ b/arch/x86/kernel/ldt.c 2017-11-22 15:45:49.062619739 -0800
>> @@ -11,6 +11,7 @@
> [...]
>> + ret = kaiser_add_mapping((unsigned long)new_ldt->entries, alloc_size,
>> + __PAGE_KERNEL | _PAGE_GLOBAL);
>> + if (ret) {
>> + __free_ldt_struct(new_ldt);
>> + return NULL;
>> + }
>> new_ldt->nr_entries = num_entries;
>> return new_ldt;
>
> __free_ldt_struct() uses new_ldt->nr_entries, so new_ldt->nr_entries needs to be
> set earlier.
>

I would suggest just dropping this patch and forcing MODIFY_LDT off
when kaiser is on. I'll fix it later.