diff options
author | Hugh Dickins <hughd@google.com> | 2017-12-17 19:53:01 -0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2018-01-09 00:35:14 +0000 |
commit | a606925a28b389f1c726851fe35f07917ffaeafe (patch) | |
tree | 6cbcd20f5f4ce83be5a7fc9f4e0258c158c4ec43 /arch | |
parent | 082345aaa10a01ef140240a1d9f864a3cc17436e (diff) |
kaiser: alloc_ldt_struct() use get_zeroed_page()
Change the 3.2.96 and 3.18.72 alloc_ldt_struct() to allocate its entries
with get_zeroed_page(), as 4.3 onwards does since f454b4788613 ("x86/ldt:
Fix small LDT allocation for Xen"). This then matches the free_page()
I had misported in __free_ldt_struct(), and fixes the
"BUG: Bad page state in process ldt_gdt_32 ... flags: 0x80(slab)"
reported by Kees Cook and Jiri Kosina, and analysed by Jiri.
Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/ldt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c index 5797d437710d..7bfd9ae0d228 100644 --- a/arch/x86/kernel/ldt.c +++ b/arch/x86/kernel/ldt.c @@ -69,7 +69,7 @@ static struct ldt_struct *alloc_ldt_struct(int size) if (alloc_size > PAGE_SIZE) new_ldt->entries = vzalloc(alloc_size); else - new_ldt->entries = kzalloc(PAGE_SIZE, GFP_KERNEL); + new_ldt->entries = (void *)get_zeroed_page(GFP_KERNEL); if (!new_ldt->entries) { kfree(new_ldt); |