mm: softdirty: keep bit when zapping file pte
This fixes the same bug asb43790eedd
("mm: softdirty: don't forget to save file map softdiry bit on unmap") and9aed8614af
("mm/memory.c: don't forget to set softdirty on file mapped fault") where the return value of pte_*mksoft_dirty was being ignored. To be sure that no other pte/pmd "mk" function return values were being ignored, I annotated the functions in arch/x86/include/asm/pgtable.h with __must_check and rebuilt. The userspace effect of this bug is that the softdirty mark might be lost if a file mapped pte get zapped. Signed-off-by: Peter Feiner <pfeiner@google.com> Acked-by: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Jamie Liu <jamieliu@google.com> Cc: Hugh Dickins <hughd@google.com> Cc: <stable@vger.kernel.org> [3.12+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6ff66ac77a
commit
dbab31aa2c
|
@ -1127,7 +1127,7 @@ again:
|
||||||
addr) != page->index) {
|
addr) != page->index) {
|
||||||
pte_t ptfile = pgoff_to_pte(page->index);
|
pte_t ptfile = pgoff_to_pte(page->index);
|
||||||
if (pte_soft_dirty(ptent))
|
if (pte_soft_dirty(ptent))
|
||||||
pte_file_mksoft_dirty(ptfile);
|
ptfile = pte_file_mksoft_dirty(ptfile);
|
||||||
set_pte_at(mm, addr, pte, ptfile);
|
set_pte_at(mm, addr, pte, ptfile);
|
||||||
}
|
}
|
||||||
if (PageAnon(page))
|
if (PageAnon(page))
|
||||||
|
|
Loading…
Reference in New Issue