diff options
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r-- | mm/hugetlb.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index bc48ee783dd9..31e207cb399b 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -4062,9 +4062,9 @@ out: | |||
4062 | return ret; | 4062 | return ret; |
4063 | out_release_unlock: | 4063 | out_release_unlock: |
4064 | spin_unlock(ptl); | 4064 | spin_unlock(ptl); |
4065 | out_release_nounlock: | ||
4066 | if (vm_shared) | 4065 | if (vm_shared) |
4067 | unlock_page(page); | 4066 | unlock_page(page); |
4067 | out_release_nounlock: | ||
4068 | put_page(page); | 4068 | put_page(page); |
4069 | goto out; | 4069 | goto out; |
4070 | } | 4070 | } |
@@ -4078,6 +4078,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
4078 | unsigned long vaddr = *position; | 4078 | unsigned long vaddr = *position; |
4079 | unsigned long remainder = *nr_pages; | 4079 | unsigned long remainder = *nr_pages; |
4080 | struct hstate *h = hstate_vma(vma); | 4080 | struct hstate *h = hstate_vma(vma); |
4081 | int err = -EFAULT; | ||
4081 | 4082 | ||
4082 | while (vaddr < vma->vm_end && remainder) { | 4083 | while (vaddr < vma->vm_end && remainder) { |
4083 | pte_t *pte; | 4084 | pte_t *pte; |
@@ -4154,11 +4155,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
4154 | } | 4155 | } |
4155 | ret = hugetlb_fault(mm, vma, vaddr, fault_flags); | 4156 | ret = hugetlb_fault(mm, vma, vaddr, fault_flags); |
4156 | if (ret & VM_FAULT_ERROR) { | 4157 | if (ret & VM_FAULT_ERROR) { |
4157 | int err = vm_fault_to_errno(ret, flags); | 4158 | err = vm_fault_to_errno(ret, flags); |
4158 | |||
4159 | if (err) | ||
4160 | return err; | ||
4161 | |||
4162 | remainder = 0; | 4159 | remainder = 0; |
4163 | break; | 4160 | break; |
4164 | } | 4161 | } |
@@ -4213,7 +4210,7 @@ same_page: | |||
4213 | */ | 4210 | */ |
4214 | *position = vaddr; | 4211 | *position = vaddr; |
4215 | 4212 | ||
4216 | return i ? i : -EFAULT; | 4213 | return i ? i : err; |
4217 | } | 4214 | } |
4218 | 4215 | ||
4219 | #ifndef __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE | 4216 | #ifndef __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE |