diff options
author | Mike Turquette | 2014-02-25 07:21:29 +0100 |
---|---|---|
committer | Mike Turquette | 2014-02-25 07:21:29 +0100 |
commit | 10b7cdc0084c27a312e59e80420c6aac70c64753 (patch) | |
tree | ee891d6236bcd8dc988624839760aaa1846cf906 /mm/mprotect.c | |
parent | clk: Correct handling of NULL clk in __clk_{get, put} (diff) | |
parent | clk: shmobile: Fix typo in MSTP clock DT bindings (diff) | |
download | kernel-qcow2-linux-10b7cdc0084c27a312e59e80420c6aac70c64753.tar.gz kernel-qcow2-linux-10b7cdc0084c27a312e59e80420c6aac70c64753.tar.xz kernel-qcow2-linux-10b7cdc0084c27a312e59e80420c6aac70c64753.zip |
Merge branch 'clocks/fixes/drivers' of git://linuxtv.org/pinchartl/fbdev into clk-fixes
Diffstat (limited to 'mm/mprotect.c')
-rw-r--r-- | mm/mprotect.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/mm/mprotect.c b/mm/mprotect.c index 7332c1785744..769a67a15803 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -58,36 +58,27 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, if (pte_numa(ptent)) ptent = pte_mknonnuma(ptent); ptent = pte_modify(ptent, newprot); + /* + * Avoid taking write faults for pages we + * know to be dirty. + */ + if (dirty_accountable && pte_dirty(ptent)) + ptent = pte_mkwrite(ptent); + ptep_modify_prot_commit(mm, addr, pte, ptent); updated = true; } else { struct page *page; - ptent = *pte; page = vm_normal_page(vma, addr, oldpte); if (page && !PageKsm(page)) { if (!pte_numa(oldpte)) { - ptent = pte_mknuma(ptent); - set_pte_at(mm, addr, pte, ptent); + ptep_set_numa(mm, addr, pte); updated = true; } } } - - /* - * Avoid taking write faults for pages we know to be - * dirty. - */ - if (dirty_accountable && pte_dirty(ptent)) { - ptent = pte_mkwrite(ptent); - updated = true; - } - if (updated) pages++; - - /* Only !prot_numa always clears the pte */ - if (!prot_numa) - ptep_modify_prot_commit(mm, addr, pte, ptent); } else if (IS_ENABLED(CONFIG_MIGRATION) && !pte_file(oldpte)) { swp_entry_t entry = pte_to_swp_entry(oldpte); |