aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/memory.c')
-rw-r--r--mm/memory.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 482f089765ff..57361708d1a5 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2650,6 +2650,9 @@ reuse:
2650 if (!page_mkwrite) { 2650 if (!page_mkwrite) {
2651 wait_on_page_locked(dirty_page); 2651 wait_on_page_locked(dirty_page);
2652 set_page_dirty_balance(dirty_page, page_mkwrite); 2652 set_page_dirty_balance(dirty_page, page_mkwrite);
2653 /* file_update_time outside page_lock */
2654 if (vma->vm_file)
2655 file_update_time(vma->vm_file);
2653 } 2656 }
2654 put_page(dirty_page); 2657 put_page(dirty_page);
2655 if (page_mkwrite) { 2658 if (page_mkwrite) {
@@ -2667,10 +2670,6 @@ reuse:
2667 } 2670 }
2668 } 2671 }
2669 2672
2670 /* file_update_time outside page_lock */
2671 if (vma->vm_file)
2672 file_update_time(vma->vm_file);
2673
2674 return ret; 2673 return ret;
2675 } 2674 }
2676 2675
@@ -3339,12 +3338,13 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
3339 3338
3340 if (dirty_page) { 3339 if (dirty_page) {
3341 struct address_space *mapping = page->mapping; 3340 struct address_space *mapping = page->mapping;
3341 int dirtied = 0;
3342 3342
3343 if (set_page_dirty(dirty_page)) 3343 if (set_page_dirty(dirty_page))
3344 page_mkwrite = 1; 3344 dirtied = 1;
3345 unlock_page(dirty_page); 3345 unlock_page(dirty_page);
3346 put_page(dirty_page); 3346 put_page(dirty_page);
3347 if (page_mkwrite && mapping) { 3347 if ((dirtied || page_mkwrite) && mapping) {
3348 /* 3348 /*
3349 * Some device drivers do not set page.mapping but still 3349 * Some device drivers do not set page.mapping but still
3350 * dirty their pages 3350 * dirty their pages
@@ -3353,7 +3353,7 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
3353 } 3353 }
3354 3354
3355 /* file_update_time outside page_lock */ 3355 /* file_update_time outside page_lock */
3356 if (vma->vm_file) 3356 if (vma->vm_file && !page_mkwrite)
3357 file_update_time(vma->vm_file); 3357 file_update_time(vma->vm_file);
3358 } else { 3358 } else {
3359 unlock_page(vmf.page); 3359 unlock_page(vmf.page);