summaryrefslogtreecommitdiff
path: root/arch/x86/mm/pageattr.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-02-15 21:49:46 +0100
committerThomas Gleixner <tglx@linutronix.de>2008-02-18 20:54:14 +0100
commitaf96e4438a4b34a257f5318a296e0b9e182e7ab9 (patch)
tree95f07ce45975863025694ec3e51dd04f3aacd5a4 /arch/x86/mm/pageattr.c
parent31eedd823c1bf3650c450346a0d0c39431034eb9 (diff)
downloadlwn-af96e4438a4b34a257f5318a296e0b9e182e7ab9.tar.gz
lwn-af96e4438a4b34a257f5318a296e0b9e182e7ab9.zip
x86: CPA no alias checking for _NX
NX settings are not required to be consistent across alias mappings. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm/pageattr.c')
-rw-r--r--arch/x86/mm/pageattr.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 7b4a17236972..b8f53233151d 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -669,7 +669,7 @@ static int change_page_attr_set_clr(unsigned long addr, int numpages,
pgprot_t mask_set, pgprot_t mask_clr)
{
struct cpa_data cpa;
- int ret, cache;
+ int ret, cache, checkalias;
/*
* Check, if we are requested to change a not supported
@@ -695,7 +695,10 @@ static int change_page_attr_set_clr(unsigned long addr, int numpages,
cpa.mask_clr = mask_clr;
cpa.flushtlb = 0;
- ret = __change_page_attr_set_clr(&cpa, 1);
+ /* No alias checking for _NX bit modifications */
+ checkalias = (pgprot_val(mask_set) | pgprot_val(mask_clr)) != _PAGE_NX;
+
+ ret = __change_page_attr_set_clr(&cpa, checkalias);
/*
* Check whether we really changed something: