diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index a3aea2c1181be2c14b7f662a44bf3dadf1e5a04e..a5068a38d8afb8c9a455a4a044c30d763e404594 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1504,9 +1504,9 @@ static void prep_new_huge_page(struct hstate *h, struct page *page, int nid)
 {
 	INIT_LIST_HEAD(&page->lru);
 	set_compound_page_dtor(page, HUGETLB_PAGE_DTOR);
-	spin_lock(&hugetlb_lock);
 	set_hugetlb_cgroup(page, NULL);
 	set_hugetlb_cgroup_rsvd(page, NULL);
+	spin_lock(&hugetlb_lock);
 	h->nr_huge_pages++;
 	h->nr_huge_pages_node[nid]++;
 	spin_unlock(&hugetlb_lock);