mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mm/memory.c: don't forget to set softdirty on file mapped fault
Otherwise we may not notice that pte was softdirty because pte_mksoft_dirty helper _returns_ new pte but doesn't modify the argument. In case if page fault happend on dirty filemapping the newly created pte may loose softdirty bit thus if a userspace program is tracking memory changes with help of a memory tracker (CONFIG_MEM_SOFT_DIRTY) it might miss modification of a memory page (which in worts case may lead to data inconsistency). Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Acked-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									f0093ede9b
								
							
						
					
					
						commit
						9aed8614af
					
				
					 1 changed files with 1 additions and 1 deletions
				
			
		| 
						 | 
					@ -2744,7 +2744,7 @@ void do_set_pte(struct vm_area_struct *vma, unsigned long address,
 | 
				
			||||||
	if (write)
 | 
						if (write)
 | 
				
			||||||
		entry = maybe_mkwrite(pte_mkdirty(entry), vma);
 | 
							entry = maybe_mkwrite(pte_mkdirty(entry), vma);
 | 
				
			||||||
	else if (pte_file(*pte) && pte_file_soft_dirty(*pte))
 | 
						else if (pte_file(*pte) && pte_file_soft_dirty(*pte))
 | 
				
			||||||
		pte_mksoft_dirty(entry);
 | 
							entry = pte_mksoft_dirty(entry);
 | 
				
			||||||
	if (anon) {
 | 
						if (anon) {
 | 
				
			||||||
		inc_mm_counter_fast(vma->vm_mm, MM_ANONPAGES);
 | 
							inc_mm_counter_fast(vma->vm_mm, MM_ANONPAGES);
 | 
				
			||||||
		page_add_new_anon_rmap(page, vma, address);
 | 
							page_add_new_anon_rmap(page, vma, address);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue