Skip to content

Commit

Permalink
[PATCH] small fix for not releasing the mmap semaphore in i386/arch_s…
Browse files Browse the repository at this point in the history
…etup_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>
  • Loading branch information
pageexec@freemail.hu authored and Linus Torvalds committed Jun 28, 2006
1 parent a39727f commit 79bc79b
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions arch/i386/kernel/sysenter.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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)
Expand Down

0 comments on commit 79bc79b

Please sign in to comment.