diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 88c6167f194db0ec07d707329569c2d4a9d34876..f4d5f9d0f9b7683a05bf39c225191f258417cd34 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1575,8 +1575,8 @@ bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
 		get_page(page);
 		spin_unlock(ptl);
 		split_huge_page(page);
-		put_page(page);
 		unlock_page(page);
+		put_page(page);
 		goto out_unlocked;
 	}