diff options
Diffstat (limited to 'mm/mlock.c')
| -rw-r--r-- | mm/mlock.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index d7db94519884..0a0c996c5c21 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -477,7 +477,6 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,  {  	unsigned long nstart, end, tmp;  	struct vm_area_struct *vma, *prev; -	int error;  	VMA_ITERATOR(vmi, current->mm, start);  	VM_BUG_ON(offset_in_page(start)); @@ -498,6 +497,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,  	nstart = start;  	tmp = vma->vm_start;  	for_each_vma_range(vmi, vma, end) { +		int error;  		vm_flags_t newflags;  		if (vma->vm_start != tmp) @@ -511,14 +511,15 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,  			tmp = end;  		error = mlock_fixup(&vmi, vma, &prev, nstart, tmp, newflags);  		if (error) -			break; +			return error; +		tmp = vma_iter_end(&vmi);  		nstart = tmp;  	} -	if (vma_iter_end(&vmi) < end) +	if (tmp < end)  		return -ENOMEM; -	return error; +	return 0;  }  /*  | 
