[PATCH v2 06/17] x86/ldt: Do not install LDT for kernel threads

From: Peter Zijlstra
Date: Thu Dec 14 2017 - 06:44:34 EST


From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

Kernel threads can use the mm of a user process temporarily via use_mm(),
but there is no point in installing the LDT which is associated to that mm
for the kernel thread.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
---
arch/x86/include/asm/mmu_context.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -95,8 +95,7 @@ static inline void load_mm_ldt(struct mm
* the local LDT after an IPI loaded a newer value than the one
* that we can see.
*/
-
- if (unlikely(ldt))
+ if (unlikely(ldt && !(current->flags & PF_KTHREAD)))
set_ldt(ldt->entries, ldt->nr_entries);
else
clear_LDT();