2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 14:25:49 +00:00

mem: Skip premapping hugetlb mapping

As we cannot use mremap() to move the hugetlb mapping around until Linux kernel
version 5.16, we need to skip premapping hugetlb mapping.

Signed-off-by: Bui Quang Minh <minhquangbui99@gmail.com>
This commit is contained in:
Bui Quang Minh
2022-02-09 22:11:51 +07:00
committed by Andrei Vagin
parent 8941b63a4b
commit 456e50b59b

View File

@@ -733,6 +733,9 @@ static inline bool check_cow_vmas(struct vma_area *vma, struct vma_area *pvma)
return false;
if (!vma_area_is_private(pvma, kdat.task_size))
return false;
/* ... but not hugetlb mappings */
if (vma->e->flags & MAP_HUGETLB || pvma->e->flags & MAP_HUGETLB)
return false;
/* ... have growsdown and anon flags coincide */
if ((vma->e->flags ^ pvma->e->flags) & (MAP_GROWSDOWN | MAP_ANONYMOUS))
return false;
@@ -971,6 +974,9 @@ static int premap_priv_vmas(struct pstree_item *t, struct vm_area_list *vmas, vo
if (!vma_area_is_private(vma, kdat.task_size))
continue;
if (vma->e->flags & MAP_HUGETLB)
continue;
if (vma->pvma == NULL && pr->pieok && !vma_force_premap(vma, &vmas->h)) {
/*
* VMA in question is not shared with anyone. We'll