From: Dave Hansen __pa() is always be consistent inside of a single page. The next thing virt_to_page() does after that is shift down the address, killing the bits that __change_page_attr() just masked off. Remove the superfluous masking. Signed-off-by: Dave Hansen Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/mm/pageattr.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/i386/mm/pageattr.c~dont-align-virt_to_page-args arch/i386/mm/pageattr.c --- 25/arch/i386/mm/pageattr.c~dont-align-virt_to_page-args 2004-08-23 23:07:43.425444472 -0700 +++ 25-akpm/arch/i386/mm/pageattr.c 2004-08-23 23:07:43.428444016 -0700 @@ -114,7 +114,7 @@ __change_page_attr(struct page *page, pg kpte = lookup_address(address); if (!kpte) return -EINVAL; - kpte_page = virt_to_page(((unsigned long)kpte) & PAGE_MASK); + kpte_page = virt_to_page(kpte); if (pgprot_val(prot) != pgprot_val(PAGE_KERNEL)) { if ((pte_val(*kpte) & _PAGE_PSE) == 0) { pte_t old = *kpte; _