提交 79bc79b0 编写于 作者: P pageexec@freemail.hu 提交者: Linus Torvalds

[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: NLinus Torvalds <torvalds@osdl.org>
上级 a39727f2
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册