diff options
author | Mark Brown <broonie@linaro.org> | 2014-04-04 11:53:18 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-04-04 11:53:18 +0100 |
commit | d434cd472d246a00480d710c9facf528208604e0 (patch) | |
tree | fcf27c9bbf750f323ef134e47521f0855275c738 /mm/page_alloc.c | |
parent | 0f15ea2dcd21b295fa34c77dffd1164117824d2f (diff) | |
parent | b31c69571f2d6dd7a4966517f11e87f0689bb0a8 (diff) |
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 4 |
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); } } |