aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/memory.c')
-rw-r--r--mm/memory.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 221fc9ffcab1..765377385632 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3537,8 +3537,9 @@ retry:
3537 3537
3538 barrier(); 3538 barrier();
3539 if (pmd_trans_huge(orig_pmd)) { 3539 if (pmd_trans_huge(orig_pmd)) {
3540 if (flags & FAULT_FLAG_WRITE && 3540 unsigned int dirty = flags & FAULT_FLAG_WRITE;
3541 !pmd_write(orig_pmd) && 3541
3542 if (dirty && !pmd_write(orig_pmd) &&
3542 !pmd_trans_splitting(orig_pmd)) { 3543 !pmd_trans_splitting(orig_pmd)) {
3543 ret = do_huge_pmd_wp_page(mm, vma, address, pmd, 3544 ret = do_huge_pmd_wp_page(mm, vma, address, pmd,
3544 orig_pmd); 3545 orig_pmd);
@@ -3550,6 +3551,9 @@ retry:
3550 if (unlikely(ret & VM_FAULT_OOM)) 3551 if (unlikely(ret & VM_FAULT_OOM))
3551 goto retry; 3552 goto retry;
3552 return ret; 3553 return ret;
3554 } else {
3555 huge_pmd_set_accessed(mm, vma, address, pmd,
3556 orig_pmd, dirty);
3553 } 3557 }
3554 return 0; 3558 return 0;
3555 } 3559 }