diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-01-30 13:34:08 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:34:08 +0100 |
commit | 6eade8ff461fdf13ec6780602eb5618e0bdaa972 (patch) | |
tree | c99e2bf6cffc55c7bcc3e87fa024840167ce698d | |
parent | x86: cpa: fix loop (diff) | |
download | linux-6eade8ff461fdf13ec6780602eb5618e0bdaa972.tar.xz linux-6eade8ff461fdf13ec6780602eb5618e0bdaa972.zip |
x86: cpa: clean up change_page_attr_set/clear()
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | arch/x86/mm/pageattr.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 5cfc0d4ade56..145f5edf488a 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -312,10 +312,10 @@ static int change_page_attr_set(unsigned long addr, int numpages, for (i = 0; i < numpages ; i++) { pte = lookup_address(addr, &level); - if (pte) - current_prot = pte_pgprot(*pte); - else - pgprot_val(current_prot) = 0; + if (!pte) + return -EINVAL; + + current_prot = pte_pgprot(*pte); pgprot_val(new_prot) = pgprot_val(current_prot) | pgprot_val(prot); @@ -356,11 +356,12 @@ static int change_page_attr_clear(unsigned long addr, int numpages, int i, ret; for (i = 0; i < numpages; i++) { + pte = lookup_address(addr, &level); - if (pte) - current_prot = pte_pgprot(*pte); - else - pgprot_val(current_prot) = 0; + if (!pte) + return -EINVAL; + + current_prot = pte_pgprot(*pte); pgprot_val(new_prot) = pgprot_val(current_prot) & ~pgprot_val(prot); |