x86: fix ioremap pgprot inconsistency
authorThomas Gleixner <tglx@linutronix.de>
Wed, 30 Jan 2008 12:34:05 +0000 (13:34 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 30 Jan 2008 12:34:05 +0000 (13:34 +0100)
The pgprot flags which are handed into ioremap_page_range() are
different to those which are set in change_page_attr(). The
ioremap_page_range flags are executable, while the c_p_a flags are
not.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/mm/ioremap_64.c

index 0a05f024dc221be8a692db2e1bac51b28b17456d..a37556124c86b9941f30bee0af1d93fdd211c10a 100644 (file)
@@ -53,7 +53,7 @@ ioremap_change_attr(unsigned long phys_addr, unsigned long size,
                 * Must use a address here and not struct page because the phys addr
                 * can be a in hole between nodes and not have an memmap entry.
                 */
-               err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
+               err = change_page_attr_addr(vaddr,npages,MAKE_GLOBAL(__PAGE_KERNEL|flags));
                if (!err)
                        global_flush_tlb();
        }
@@ -91,7 +91,7 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
        if (phys_addr >= ISA_START_ADDRESS && last_addr < ISA_END_ADDRESS)
                return (__force void __iomem *)phys_to_virt(phys_addr);
 
-       pgprot = __pgprot(__PAGE_KERNEL_EXEC | _PAGE_GLOBAL | flags);
+       pgprot = MAKE_GLOBAL(__PAGE_KERNEL | flags);
        /*
         * Mappings have to be page-aligned
         */