diff options
Diffstat (limited to 'mm/mempolicy.c')
-rw-r--r-- | mm/mempolicy.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index afa06e184d88..9033f0859aa8 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
@@ -333,8 +333,13 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end, | |||
333 | if (prev && prev->vm_end < vma->vm_start) | 333 | if (prev && prev->vm_end < vma->vm_start) |
334 | return ERR_PTR(-EFAULT); | 334 | return ERR_PTR(-EFAULT); |
335 | if ((flags & MPOL_MF_STRICT) && !is_vm_hugetlb_page(vma)) { | 335 | if ((flags & MPOL_MF_STRICT) && !is_vm_hugetlb_page(vma)) { |
336 | unsigned long endvma = vma->vm_end; | ||
337 | if (endvma > end) | ||
338 | endvma = end; | ||
339 | if (vma->vm_start > start) | ||
340 | start = vma->vm_start; | ||
336 | err = check_pgd_range(vma->vm_mm, | 341 | err = check_pgd_range(vma->vm_mm, |
337 | vma->vm_start, vma->vm_end, nodes); | 342 | start, endvma, nodes); |
338 | if (err) { | 343 | if (err) { |
339 | first = ERR_PTR(err); | 344 | first = ERR_PTR(err); |
340 | break; | 345 | break; |