x86/ldt: Make LDT pgtable free conditional
authorThomas Gleixner <tglx@linutronix.de>
Sun, 31 Dec 2017 15:52:15 +0000 (16:52 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 31 Dec 2017 15:55:09 +0000 (16:55 +0100)
Andy prefers to be paranoid about the pagetable free in the error path of
write_ldt(). Make it conditional and warn whenever the installment of a
secondary LDT fails.

Requested-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/ldt.c

index 500e90e..26d713e 100644 (file)
@@ -426,7 +426,8 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
                 * already installed then the PTE page is already
                 * populated. Mop up a half populated page table.
                 */
-               free_ldt_pgtables(mm);
+               if (!WARN_ON_ONCE(old_ldt))
+                       free_ldt_pgtables(mm);
                free_ldt_struct(new_ldt);
                goto out_unlock;
        }