thp: avoid VM_BUG_ON page_count(page) false positives in __collapse_huge_page_copy
authorAndrea Arcangeli <aarcange@redhat.com>
Fri, 28 Sep 2012 12:35:31 +0000 (14:35 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Sep 2012 15:38:09 +0000 (08:38 -0700)
commit99a1300e1d84709f419182bb5189760e78234882
tree1d3cc49d4015fbb2b3d5bbeed313d30d7756526b
parent63994137eb53bb0fc42ad180c0ce509d3eb3bdc9
thp: avoid VM_BUG_ON page_count(page) false positives in __collapse_huge_page_copy

Speculative cache pagecache lookups can elevate the refcount from
under us, so avoid the false positive. If the refcount is < 2 we'll be
notified by a VM_BUG_ON in put_page_testzero as there are two
put_page(src_page) in a row before returning from this function.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
Reviewed-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Petr Holasek <pholasek@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/huge_memory.c