selftests/x86/ldt_gdt: Run most existing LDT test cases against the GDT as well
authorAndy Lutomirski <luto@kernel.org>
Sat, 4 Nov 2017 11:19:51 +0000 (04:19 -0700)
committerIngo Molnar <mingo@kernel.org>
Tue, 7 Nov 2017 10:13:43 +0000 (11:13 +0100)
Now that the main test infrastructure supports the GDT, run tests
that will pass the kernel's GDT permission tests against the GDT.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bpetkov@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/686a1eda63414da38fcecc2412db8dba1ae40581.1509794321.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
tools/testing/selftests/x86/ldt_gdt.c

index 45f30249133f2da54caa078f65e80ef4fab71c5b..3bb42fff5d663bc3d8283c625c15eaeb79871d94 100644 (file)
@@ -189,7 +189,15 @@ static bool install_valid_mode(const struct user_desc *d, uint32_t ar,
 
 static bool install_valid(const struct user_desc *desc, uint32_t ar)
 {
-       return install_valid_mode(desc, ar, false, true);
+       bool ret = install_valid_mode(desc, ar, false, true);
+
+       if (desc->contents <= 1 && desc->seg_32bit &&
+           !desc->seg_not_present) {
+               /* Should work in the GDT, too. */
+               install_valid_mode(desc, ar, false, false);
+       }
+
+       return ret;
 }
 
 static void install_invalid(const struct user_desc *desc, bool oldmode)