> 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. Eric