mm: softdirty: don't forget to save file map softdiry bit on unmap
authorCyrill Gorcunov <gorcunov@openvz.org>
Wed, 4 Jun 2014 23:06:42 +0000 (16:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 4 Jun 2014 23:53:56 +0000 (16:53 -0700)
pte_file_mksoft_dirty operates with argument passed by a value and
returns modified result thus we need to assign @ptfile here, otherwise
itis a no-op which may lead to loss of the softdirty bit.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/rmap.c

index 10aef960d3d0601df94afe5e466d6a141e85138a..7da400d5d98e14a6016796df29228e1f35bf36a9 100644 (file)
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -1361,7 +1361,7 @@ static int try_to_unmap_cluster(unsigned long cursor, unsigned int *mapcount,
                if (page->index != linear_page_index(vma, address)) {
                        pte_t ptfile = pgoff_to_pte(page->index);
                        if (pte_soft_dirty(pteval))
-                               pte_file_mksoft_dirty(ptfile);
+                               ptfile = pte_file_mksoft_dirty(ptfile);
                        set_pte_at(mm, address, pte, ptfile);
                }