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
This commit is contained in:
commit
1092b596a5
|
@ -28,6 +28,13 @@ struct user_desc {
|
||||||
unsigned int seg_not_present:1;
|
unsigned int seg_not_present:1;
|
||||||
unsigned int useable:1;
|
unsigned int useable:1;
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
|
/*
|
||||||
|
* Because this bit is not present in 32-bit user code, user
|
||||||
|
* programs can pass uninitialized values here. Therefore, in
|
||||||
|
* any context in which a user_desc comes from a 32-bit program,
|
||||||
|
* the kernel must act as though lm == 0, regardless of the
|
||||||
|
* actual value.
|
||||||
|
*/
|
||||||
unsigned int lm:1;
|
unsigned int lm:1;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,12 +55,6 @@ static bool tls_desc_okay(const struct user_desc *info)
|
||||||
if (info->seg_not_present)
|
if (info->seg_not_present)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
|
||||||
/* The L bit makes no sense for data. */
|
|
||||||
if (info->lm)
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue