]> git.baikalelectronics.ru Git - kernel.git/commit
mm/z3fold.c: claim page in the beginning of free
authorVitaly Wool <vitalywool@gmail.com>
Mon, 7 Oct 2019 00:58:22 +0000 (17:58 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 7 Oct 2019 22:47:19 +0000 (15:47 -0700)
commitde691441e9d9f12d4b0264c09d81c2829042b1cf
tree3c0965d85ecaf69ee21532a11925976f4409254c
parent8a8601e60dadd31c314ccc2666ec9d5c1806ca2d
mm/z3fold.c: claim page in the beginning of free

There's a really hard to reproduce race in z3fold between z3fold_free()
and z3fold_reclaim_page().  z3fold_reclaim_page() can claim the page
after z3fold_free() has checked if the page was claimed and
z3fold_free() will then schedule this page for compaction which may in
turn lead to random page faults (since that page would have been
reclaimed by then).

Fix that by claiming page in the beginning of z3fold_free() and not
forgetting to clear the claim in the end.

[vitalywool@gmail.com: v2]
Link: http://lkml.kernel.org/r/20190928113456.152742cf@bigdell
Link: http://lkml.kernel.org/r/20190926104844.4f0c6efa1366b8f5741eaba9@gmail.com
Signed-off-by: Vitaly Wool <vitalywool@gmail.com>
Reported-by: Markus Linnala <markus.linnala@gmail.com>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Henry Burns <henrywolfeburns@gmail.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Markus Linnala <markus.linnala@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/z3fold.c