diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-02-15 15:49:46 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-02-18 14:54:14 -0500 |
commit | af96e4438a4b34a257f5318a296e0b9e182e7ab9 (patch) | |
tree | 95f07ce45975863025694ec3e51dd04f3aacd5a4 /arch/x86/mm/pageattr.c | |
parent | 31eedd823c1bf3650c450346a0d0c39431034eb9 (diff) |
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.c | 7 |
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, | |||
669 | pgprot_t mask_set, pgprot_t mask_clr) | 669 | pgprot_t mask_set, pgprot_t mask_clr) |
670 | { | 670 | { |
671 | struct cpa_data cpa; | 671 | struct cpa_data cpa; |
672 | int ret, cache; | 672 | int ret, cache, checkalias; |
673 | 673 | ||
674 | /* | 674 | /* |
675 | * Check, if we are requested to change a not supported | 675 | * 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, | |||
695 | cpa.mask_clr = mask_clr; | 695 | cpa.mask_clr = mask_clr; |
696 | cpa.flushtlb = 0; | 696 | cpa.flushtlb = 0; |
697 | 697 | ||
698 | ret = __change_page_attr_set_clr(&cpa, 1); | 698 | /* No alias checking for _NX bit modifications */ |
699 | checkalias = (pgprot_val(mask_set) | pgprot_val(mask_clr)) != _PAGE_NX; | ||
700 | |||
701 | ret = __change_page_attr_set_clr(&cpa, checkalias); | ||
699 | 702 | ||
700 | /* | 703 | /* |
701 | * Check whether we really changed something: | 704 | * Check whether we really changed something: |