diff options
Diffstat (limited to 'mm/hugetlb.c')
| -rw-r--r-- | mm/hugetlb.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 0a9ac6c26832..c41b2a0ee273 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
| @@ -917,7 +917,6 @@ static void prep_compound_gigantic_page(struct page *page, unsigned long order) | |||
| 917 | __SetPageHead(page); | 917 | __SetPageHead(page); |
| 918 | __ClearPageReserved(page); | 918 | __ClearPageReserved(page); |
| 919 | for (i = 1; i < nr_pages; i++, p = mem_map_next(p, page, i)) { | 919 | for (i = 1; i < nr_pages; i++, p = mem_map_next(p, page, i)) { |
| 920 | __SetPageTail(p); | ||
| 921 | /* | 920 | /* |
| 922 | * For gigantic hugepages allocated through bootmem at | 921 | * For gigantic hugepages allocated through bootmem at |
| 923 | * boot, it's safer to be consistent with the not-gigantic | 922 | * boot, it's safer to be consistent with the not-gigantic |
| @@ -933,6 +932,9 @@ static void prep_compound_gigantic_page(struct page *page, unsigned long order) | |||
| 933 | __ClearPageReserved(p); | 932 | __ClearPageReserved(p); |
| 934 | set_page_count(p, 0); | 933 | set_page_count(p, 0); |
| 935 | p->first_page = page; | 934 | p->first_page = page; |
| 935 | /* Make sure p->first_page is always valid for PageTail() */ | ||
| 936 | smp_wmb(); | ||
| 937 | __SetPageTail(p); | ||
| 936 | } | 938 | } |
| 937 | } | 939 | } |
| 938 | 940 | ||
