[lkml]   [2014]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[tip:x86/urgent] x86, smap: smap_violation() is bogus if CONFIG_X86_SMAP is off
Commit-ID:  f27d7759ad1ff48673831e598d6df4c76b2bcd06
Author: H. Peter Anvin <>
AuthorDate: Thu, 13 Feb 2014 07:46:04 -0800
Committer: H. Peter Anvin <>
CommitDate: Thu, 13 Feb 2014 07:50:45 -0800

x86, smap: smap_violation() is bogus if CONFIG_X86_SMAP is off

If CONFIG_X86_SMAP is disabled, smap_violation() tests for conditions
which are incorrect (as the AC flag doesn't matter), causing spurious

The dynamic disabling of SMAP (nosmap on the command line) is fine
because it disables X86_FEATURE_SMAP, therefore causing the
static_cpu_has() to return false.

Found by Fengguang Wu's test system.

Reported-by: Fengguang Wu <>
Signed-off-by: H. Peter Anvin <>
Cc: <> # v3.7+
arch/x86/mm/fault.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 9d591c8..4b39bb7 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -1087,12 +1087,14 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code)
if (unlikely(error_code & PF_RSVD))
pgtable_bad(regs, error_code, address);

+#ifdef CONFIG_X86_SMAP
if (static_cpu_has(X86_FEATURE_SMAP)) {
if (unlikely(smap_violation(error_code, regs))) {
bad_area_nosemaphore(regs, error_code, address);

* If we're in an interrupt, have no user context or are running

 \ /
  Last update: 2014-02-13 17:41    [W:0.044 / U:4.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site