thp: add compound_trans_head() helper

Cleanup some code with common compound_trans_head helper.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Johannes Weiner <jweiner@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Avi Kivity <avi@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Andrea Arcangeli
2011-01-13 15:47:20 -08:00
committed by Linus Torvalds
vanhempi 29ad768cfc
commit 22e5c47ee2
3 muutettua tiedostoa jossa 35 lisäystä ja 36 poistoa

Näytä tiedosto

@@ -415,20 +415,11 @@ out:
static struct page *page_trans_compound_anon(struct page *page)
{
if (PageTransCompound(page)) {
struct page *head;
head = compound_head(page);
struct page *head = compound_trans_head(page);
/*
* head may be a dangling pointer.
* __split_huge_page_refcount clears PageTail
* before overwriting first_page, so if
* PageTail is still there it means the head
* pointer isn't dangling.
* head may actually be splitted and freed from under
* us but it's ok here.
*/
if (head != page) {
smp_rmb();
if (!PageTransCompound(page))
return NULL;
}
if (PageAnon(head))
return head;
}