Commit 56cde66d authored by Yuan Can's avatar Yuan Can
Browse files

mm: hugetlb_vmemmap: allow alloc vmemmap pages fallback to other nodes

mainline inclusion
from mainline-v6.7-rc1
commit 6a898c2757af1ac852bb917a0866d2724f303076
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I96CYK
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6a898c2757af1ac852bb917a0866d2724f303076

----------------------------------------------------------------------

In vmemmap_remap_free(), a new head vmemmap page is allocated to avoid
breaking a contiguous block of struct page memory, however, the allocation
can always fail when the given node is movable node.  Remove the
__GFP_THISNODE to help avoid fragmentation.

Link: https://lkml.kernel.org/r/20230906093157.9737-1-yuancan@huawei.com


Signed-off-by: default avatarYuan Can <yuancan@huawei.com>
Suggested-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
Suggested-by: default avatarMuchun Song <songmuchun@bytedance.com>
Reviewed-by: default avatarMuchun Song <songmuchun@bytedance.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent a18c9b7d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -320,8 +320,7 @@ static int vmemmap_remap_free(unsigned long start, unsigned long end,
		.vmemmap_pages	= &vmemmap_pages,
	};
	int nid = page_to_nid((struct page *)reuse);
	gfp_t gfp_mask = GFP_KERNEL | __GFP_THISNODE | __GFP_NORETRY |
			__GFP_NOWARN;
	gfp_t gfp_mask = GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN;

	/*
	 * Allocate a new head vmemmap page to avoid breaking a contiguous