Files
linux/mm
Hugh Dickins e466d3b572 mm: fix possible cause of a page_mapped BUG
commit a3e8cc643d upstream.

Robert Swiecki reported a BUG_ON(page_mapped) from a fuzzer, punching
a hole with madvise(,, MADV_REMOVE).  That path is under mutex, and
cannot be explained by lack of serialization in unmap_mapping_range().

Reviewing the code, I found one place where vm_truncate_count handling
should have been updated, when I switched at the last minute from one
way of managing the restart_addr to another: mremap move changes the
virtual addresses, so it ought to adjust the restart_addr.

But rather than exporting the notion of restart_addr from memory.c, or
converting to restart_pgoff throughout, simply reset vm_truncate_count
to 0 to force a rescan if mremap move races with preempted truncation.

We have no confirmation that this fixes Robert's BUG,
but it is a fix that's worth making anyway.

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Kerin Millar <kerframil@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-03-14 14:29:55 -07:00
..
2009-04-01 08:59:13 -07:00
2010-07-05 11:10:42 -07:00
2009-06-16 19:47:28 -07:00
2010-01-06 15:05:22 -08:00
2010-05-12 14:57:00 -07:00
2010-12-09 13:26:39 -08:00
2009-09-22 07:17:35 -07:00
2010-10-28 21:44:18 -07:00
2010-12-09 13:27:02 -08:00
2010-09-26 17:21:27 -07:00
2009-10-01 16:11:12 -07:00
2010-08-26 16:41:46 -07:00
2009-06-23 12:50:05 -07:00
2010-01-22 15:18:41 -08:00
2010-01-18 10:19:11 -08:00