diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6f99a0f906bb..591e297f0ace 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4142,7 +4142,9 @@ int hugetlb_reserve_pages(struct inode *inode, return 0; out_err: if (!vma || vma->vm_flags & VM_MAYSHARE) - region_abort(resv_map, from, to); + /* Don't call region_abort if region_chg failed */ + if (chg >= 0) + region_abort(resv_map, from, to); if (vma && is_vma_resv_set(vma, HPAGE_RESV_OWNER)) kref_put(&resv_map->refs, resv_map_release); return ret;