From: Wang Wensheng <wangwensheng4@huawei.com> hulk inclusion category: feature category: bugfix bugzilla: NA ---------------------------------------- Do the same in sp_mmap_nc() as what we do in sp_mmap(). Fixes: 00c7c3d64806 ("hugetlb: support auto demote and promote") Signed-off-by: Wang Wensheng <wangwensheng4@huawei.com> --- mm/share_pool.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/mm/share_pool.c b/mm/share_pool.c index 9ff7a2da3dfc..e359d188ebba 100644 --- a/mm/share_pool.c +++ b/mm/share_pool.c @@ -2225,13 +2225,19 @@ static int sp_nc_mmap(struct mm_struct *mm, struct sp_area *spa, unsigned long p vm_flags_clear(vma, VM_MAYWRITE); vma->vm_page_prot = sp_pgprot_writethrough(vma->vm_page_prot); - up_write(&mm->mmap_lock); - - ret = do_mm_populate(mm, addr, populate, 0); - if (ret) { - down_write(&mm->mmap_lock); - do_munmap(mm, addr, spa_size(spa), NULL); + if (sp_area_need_hugepage(spa)) { + ret = sp_vma_insert_hugepages(vma, spa->pages, addr, size); + if (ret) + do_munmap(mm, addr, spa_size(spa), NULL); up_write(&mm->mmap_lock); + } else { + up_write(&mm->mmap_lock); + ret = do_mm_populate(mm, addr, populate, 0); + if (ret) { + down_write(&mm->mmap_lock); + do_munmap(mm, addr, spa_size(spa), NULL); + up_write(&mm->mmap_lock); + } } return ret; -- 2.43.0