aboutsummaryrefslogtreecommitdiff
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-04-04 11:53:18 +0100
committerMark Brown <broonie@linaro.org>2014-04-04 11:53:18 +0100
commitd434cd472d246a00480d710c9facf528208604e0 (patch)
treefcf27c9bbf750f323ef134e47521f0855275c738 /mm/page_alloc.c
parent0f15ea2dcd21b295fa34c77dffd1164117824d2f (diff)
parentb31c69571f2d6dd7a4966517f11e87f0689bb0a8 (diff)
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 82e897fc291f..4cfdc64482c8 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -373,9 +373,11 @@ void prep_compound_page(struct page *page, unsigned long order)
__SetPageHead(page);
for (i = 1; i < nr_pages; i++) {
struct page *p = page + i;
- __SetPageTail(p);
set_page_count(p, 0);
p->first_page = page;
+ /* Make sure p->first_page is always valid for PageTail() */
+ smp_wmb();
+ __SetPageTail(p);
}
}