|
@@ -65,19 +65,17 @@ static pte_t *walk_page_table(unsigned long addr)
|
|
static void change_page_attr(unsigned long addr, int numpages,
|
|
static void change_page_attr(unsigned long addr, int numpages,
|
|
pte_t (*set) (pte_t))
|
|
pte_t (*set) (pte_t))
|
|
{
|
|
{
|
|
- pte_t *ptep, pte;
|
|
|
|
|
|
+ pte_t *ptep;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
for (i = 0; i < numpages; i++) {
|
|
for (i = 0; i < numpages; i++) {
|
|
ptep = walk_page_table(addr);
|
|
ptep = walk_page_table(addr);
|
|
if (WARN_ON_ONCE(!ptep))
|
|
if (WARN_ON_ONCE(!ptep))
|
|
break;
|
|
break;
|
|
- pte = *ptep;
|
|
|
|
- pte = set(pte);
|
|
|
|
- __ptep_ipte(addr, ptep);
|
|
|
|
- *ptep = pte;
|
|
|
|
|
|
+ *ptep = set(*ptep);
|
|
addr += PAGE_SIZE;
|
|
addr += PAGE_SIZE;
|
|
}
|
|
}
|
|
|
|
+ __tlb_flush_kernel();
|
|
}
|
|
}
|
|
|
|
|
|
int set_memory_ro(unsigned long addr, int numpages)
|
|
int set_memory_ro(unsigned long addr, int numpages)
|