diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 1301ba7b2c9a..731c1bcc22df 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -296,6 +296,7 @@ void hugetlb_vma_lock_write(struct vm_area_struct *vma) down_write(&vma_lock->rw_sema); } else if (__vma_private_lock(vma)) { struct resv_map *resv_map = vma_resv_map(vma); + printk("%p, %p, %s\n", vma, resv_map, __func__); down_write(&resv_map->rw_sema); } @@ -309,6 +310,7 @@ void hugetlb_vma_unlock_write(struct vm_area_struct *vma) up_write(&vma_lock->rw_sema); } else if (__vma_private_lock(vma)) { struct resv_map *resv_map = vma_resv_map(vma); + printk("%p, %p, %s\n", vma, resv_map, __func__); up_write(&resv_map->rw_sema); } @@ -1097,6 +1099,7 @@ struct resv_map *resv_map_alloc(void) return NULL; } + printk("%p, %s\n", resv_map, __func__); kref_init(&resv_map->refs); spin_lock_init(&resv_map->lock); INIT_LIST_HEAD(&resv_map->regions); @@ -1238,6 +1241,7 @@ void clear_vma_resv_huge_pages(struct vm_area_struct *vma) if (reservations && is_vma_resv_set(vma, HPAGE_RESV_OWNER)) { resv_map_put_hugetlb_cgroup_uncharge_info(reservations); + printk("rmap:%p, vma:%p, %s\n", reservations, vma, __func__); kref_put(&reservations->refs, resv_map_release); } @@ -4894,7 +4898,9 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma) hugetlb_acct_memory(h, -gbl_reserve); } + printk("rmap:%p, vma:%p, %s\n", resv, vma, __func__); kref_put(&resv->refs, resv_map_release); + hugetlb_dup_vma_private(vma); } static int hugetlb_vm_op_split(struct vm_area_struct *vma, unsigned long addr) @@ -6749,6 +6755,7 @@ bool hugetlb_reserve_pages(struct inode *inode, chg = region_chg(resv_map, from, to, ®ions_needed); } else { /* Private mapping. */ + printk("%p, %s\n", vma, __func__); resv_map = resv_map_alloc(); if (!resv_map) goto out_err; @@ -6854,6 +6861,7 @@ bool hugetlb_reserve_pages(struct inode *inode, if (chg >= 0 && add < 0) region_abort(resv_map, from, to, regions_needed); if (vma && is_vma_resv_set(vma, HPAGE_RESV_OWNER)) { + printk("rmap:%p, vma:%p, %s\n", resv_map, vma, __func__); kref_put(&resv_map->refs, resv_map_release); set_vma_resv_map(vma, NULL); }