Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79bc79b0 authored by pageexec@freemail.hu's avatar pageexec@freemail.hu Committed by Linus Torvalds
Browse files

[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: default avatarLinus Torvalds <torvalds@osdl.org>
parent a39727f2
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -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)