Loading arch/x86/mm/pageattr_64.c +8 −4 Original line number Diff line number Diff line Loading @@ -123,14 +123,15 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) { int err = 0, kernel_map = 0, i; #ifdef CONFIG_X86_64 if (address >= __START_KERNEL_map && address < __START_KERNEL_map + KERNEL_TEXT_SIZE) { address = (unsigned long)__va(__pa(address)); kernel_map = 1; } #endif down_write(&init_mm.mmap_sem); for (i = 0; i < numpages; i++, address += PAGE_SIZE) { unsigned long pfn = __pa(address) >> PAGE_SHIFT; Loading @@ -139,8 +140,11 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) if (err) break; } /* Handle kernel mapping too which aliases part of the * lowmem */ #ifdef CONFIG_X86_64 /* * Handle kernel mapping too which aliases part of * lowmem: */ if (__pa(address) < KERNEL_TEXT_SIZE) { unsigned long addr2; pgprot_t prot2; Loading @@ -150,8 +154,8 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) prot2 = pte_pgprot(pte_mkexec(pfn_pte(0, prot))); err = __change_page_attr(addr2, pfn_to_page(pfn), prot2); } #endif } up_write(&init_mm.mmap_sem); return err; } Loading Loading
arch/x86/mm/pageattr_64.c +8 −4 Original line number Diff line number Diff line Loading @@ -123,14 +123,15 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) { int err = 0, kernel_map = 0, i; #ifdef CONFIG_X86_64 if (address >= __START_KERNEL_map && address < __START_KERNEL_map + KERNEL_TEXT_SIZE) { address = (unsigned long)__va(__pa(address)); kernel_map = 1; } #endif down_write(&init_mm.mmap_sem); for (i = 0; i < numpages; i++, address += PAGE_SIZE) { unsigned long pfn = __pa(address) >> PAGE_SHIFT; Loading @@ -139,8 +140,11 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) if (err) break; } /* Handle kernel mapping too which aliases part of the * lowmem */ #ifdef CONFIG_X86_64 /* * Handle kernel mapping too which aliases part of * lowmem: */ if (__pa(address) < KERNEL_TEXT_SIZE) { unsigned long addr2; pgprot_t prot2; Loading @@ -150,8 +154,8 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) prot2 = pte_pgprot(pte_mkexec(pfn_pte(0, prot))); err = __change_page_attr(addr2, pfn_to_page(pfn), prot2); } #endif } up_write(&init_mm.mmap_sem); return err; } Loading