unsigned long addr = max(vma->vm_start, start);
unsigned long len = min(end, vma->vm_end) - addr;
unsigned long offset, res_vma;
+ bool multi_allowed;
/* No gap permitted at the start of the range. */
if (!seen_vma && start < vma->vm_start)
vrm->new_addr = target_addr + offset;
vrm->old_len = vrm->new_len = len;
- if (!vma_multi_allowed(vma)) {
+ multi_allowed = vma_multi_allowed(vma);
+ if (!multi_allowed) {
/* This is not the first VMA, abort immediately. */
if (seen_vma)
return -EFAULT;
return res_vma;
if (!seen_vma) {
- VM_WARN_ON_ONCE(vma_multi_allowed(vma) &&
- res_vma != new_addr);
+ VM_WARN_ON_ONCE(multi_allowed && res_vma != new_addr);
res = res_vma;
}