|
@@ -2275,15 +2275,6 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma)
|
|
|
kref_get(&resv->refs);
|
|
|
}
|
|
|
|
|
|
-static void resv_map_put(struct vm_area_struct *vma)
|
|
|
-{
|
|
|
- struct resv_map *resv = vma_resv_map(vma);
|
|
|
-
|
|
|
- if (!resv)
|
|
|
- return;
|
|
|
- kref_put(&resv->refs, resv_map_release);
|
|
|
-}
|
|
|
-
|
|
|
static void hugetlb_vm_op_close(struct vm_area_struct *vma)
|
|
|
{
|
|
|
struct hstate *h = hstate_vma(vma);
|
|
@@ -2300,7 +2291,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
|
|
|
reserve = (end - start) -
|
|
|
region_count(resv, start, end);
|
|
|
|
|
|
- resv_map_put(vma);
|
|
|
+ kref_put(&resv->refs, resv_map_release);
|
|
|
|
|
|
if (reserve) {
|
|
|
hugetlb_acct_memory(h, -reserve);
|
|
@@ -3249,8 +3240,8 @@ int hugetlb_reserve_pages(struct inode *inode,
|
|
|
region_add(resv_map, from, to);
|
|
|
return 0;
|
|
|
out_err:
|
|
|
- if (vma)
|
|
|
- resv_map_put(vma);
|
|
|
+ if (vma && is_vma_resv_set(vma, HPAGE_RESV_OWNER))
|
|
|
+ kref_put(&resv_map->refs, resv_map_release);
|
|
|
return ret;
|
|
|
}
|
|
|
|