[PATCH] small fix for not releasing the mmap semaphore in i386/arch_setup_additional_pages
the VDSO randomization code on i386 fails to release the mmap semaphore if insert_vm_struct() fails. [ Made the conditional unlikely. -- Linus ] Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
a39727f212
commit
79bc79b07c
1 changed files with 4 additions and 6 deletions
|
@ -148,8 +148,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
|
|||
vma->vm_mm = mm;
|
||||
|
||||
ret = insert_vm_struct(mm, vma);
|
||||
if (ret)
|
||||
goto free_vma;
|
||||
if (unlikely(ret)) {
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
goto up_fail;
|
||||
}
|
||||
|
||||
current->mm->context.vdso = (void *)addr;
|
||||
current_thread_info()->sysenter_return =
|
||||
|
@ -158,10 +160,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
|
|||
up_fail:
|
||||
up_write(&mm->mmap_sem);
|
||||
return ret;
|
||||
|
||||
free_vma:
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return ret;
|
||||
}
|
||||
|
||||
const char *arch_vma_name(struct vm_area_struct *vma)
|
||||
|
|
Loading…
Reference in a new issue