diff --git a/mm/memory.c b/mm/memory.c index fa0d9ad17bd3..c48371a4ef02 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4040,8 +4040,8 @@ static struct folio *__alloc_swap_folio(struct vm_fault *vmf) struct folio *folio; swp_entry_t entry; - folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, - vmf->address, false); + folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_CMA, + 0, vma, vmf->address, false); if (!folio) return NULL; @@ -4351,7 +4351,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) folio->private = NULL; } } else { - folio = swapin_readahead(entry, GFP_HIGHUSER_MOVABLE, + folio = swapin_readahead(entry, + GFP_HIGHUSER_MOVABLE | __GFP_CMA, vmf); swapcache = folio; }