Commit 1092b596a56b6ac5fa3154dc75bfcbb6f27ac757

Authored by Linus Torvalds

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fix from Ingo Molnar:
 "This contains a single TLS ABI validation fix from Andy Lutomirski"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/tls: Don't validate lm in set_thread_area() after all

Showing 2 changed files Side-by-side Diff

arch/x86/include/uapi/asm/ldt.h
... ... @@ -28,6 +28,13 @@
28 28 unsigned int seg_not_present:1;
29 29 unsigned int useable:1;
30 30 #ifdef __x86_64__
  31 + /*
  32 + * Because this bit is not present in 32-bit user code, user
  33 + * programs can pass uninitialized values here. Therefore, in
  34 + * any context in which a user_desc comes from a 32-bit program,
  35 + * the kernel must act as though lm == 0, regardless of the
  36 + * actual value.
  37 + */
31 38 unsigned int lm:1;
32 39 #endif
33 40 };
arch/x86/kernel/tls.c
... ... @@ -55,12 +55,6 @@
55 55 if (info->seg_not_present)
56 56 return false;
57 57  
58   -#ifdef CONFIG_X86_64
59   - /* The L bit makes no sense for data. */
60   - if (info->lm)
61   - return false;
62   -#endif
63   -
64 58 return true;
65 59 }
66 60