mm/hugeltb: simplify the return code of __vma_reservation_common()
It's guaranteed that the vma is associated with a resv_map, i.e. either VM_MAYSHARE or HPAGE_RESV_OWNER, when the code reaches here or we would have returned via !resv check above. So it's unneeded to check whether HPAGE_RESV_OWNER is set here. Simplify the return code to make it more clear. Link: https://lkml.kernel.org/r/20210410072348.20437-3-linmiaohe@huawei.com Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Cc: Feilong Lin <linfeilong@huawei.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f84df0b7f1
commit
bf3d12b9f7
41
mm/hugetlb.c
41
mm/hugetlb.c
@ -2174,27 +2174,26 @@ static long __vma_reservation_common(struct hstate *h,
|
||||
|
||||
if (vma->vm_flags & VM_MAYSHARE)
|
||||
return ret;
|
||||
else if (is_vma_resv_set(vma, HPAGE_RESV_OWNER) && ret >= 0) {
|
||||
/*
|
||||
* In most cases, reserves always exist for private mappings.
|
||||
* However, a file associated with mapping could have been
|
||||
* hole punched or truncated after reserves were consumed.
|
||||
* As subsequent fault on such a range will not use reserves.
|
||||
* Subtle - The reserve map for private mappings has the
|
||||
* opposite meaning than that of shared mappings. If NO
|
||||
* entry is in the reserve map, it means a reservation exists.
|
||||
* If an entry exists in the reserve map, it means the
|
||||
* reservation has already been consumed. As a result, the
|
||||
* return value of this routine is the opposite of the
|
||||
* value returned from reserve map manipulation routines above.
|
||||
*/
|
||||
if (ret)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return ret < 0 ? ret : 0;
|
||||
/*
|
||||
* We know private mapping must have HPAGE_RESV_OWNER set.
|
||||
*
|
||||
* In most cases, reserves always exist for private mappings.
|
||||
* However, a file associated with mapping could have been
|
||||
* hole punched or truncated after reserves were consumed.
|
||||
* As subsequent fault on such a range will not use reserves.
|
||||
* Subtle - The reserve map for private mappings has the
|
||||
* opposite meaning than that of shared mappings. If NO
|
||||
* entry is in the reserve map, it means a reservation exists.
|
||||
* If an entry exists in the reserve map, it means the
|
||||
* reservation has already been consumed. As a result, the
|
||||
* return value of this routine is the opposite of the
|
||||
* value returned from reserve map manipulation routines above.
|
||||
*/
|
||||
if (ret > 0)
|
||||
return 0;
|
||||
if (ret == 0)
|
||||
return 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static long vma_needs_reservation(struct hstate *h,
|
||||
|
Loading…
Reference in New Issue
Block a user