From 362bd5b7edd93fc7a4d78e8ebcbef60561ce9ca8 Mon Sep 17 00:00:00 2001 From: "Siddha, Suresh B" Date: Fri, 15 Jul 2005 19:17:44 -0700 Subject: [PATCH] --- yaml --- r: 4823 b: refs/heads/master c: 9fb1759a3102c26cd8f64254a7c3e532782c2bb8 h: refs/heads/master i: 4821: 233dc974293b47c0d3dd797618990acd751caf4b 4819: 03928199ae078d10b855ad2f66fc236fd926a417 4815: 08e30273feb091fdc2fc2991dee8787701166dc1 v: v3 --- [refs] | 2 +- trunk/arch/x86_64/ia32/syscall32.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a13d1d581bb2..df5bd7aa78b7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6e1860312cd8c33ad1f17d1af22fb6aa1f2cf83 +refs/heads/master: 9fb1759a3102c26cd8f64254a7c3e532782c2bb8 diff --git a/trunk/arch/x86_64/ia32/syscall32.c b/trunk/arch/x86_64/ia32/syscall32.c index 01d8db1a1c09..816a3b89f13d 100644 --- a/trunk/arch/x86_64/ia32/syscall32.c +++ b/trunk/arch/x86_64/ia32/syscall32.c @@ -57,6 +57,7 @@ int syscall32_setup_pages(struct linux_binprm *bprm, int exstack) int npages = (VSYSCALL32_END - VSYSCALL32_BASE) >> PAGE_SHIFT; struct vm_area_struct *vma; struct mm_struct *mm = current->mm; + int ret; vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL); if (!vma) @@ -78,7 +79,11 @@ int syscall32_setup_pages(struct linux_binprm *bprm, int exstack) vma->vm_mm = mm; down_write(&mm->mmap_sem); - insert_vm_struct(mm, vma); + if ((ret = insert_vm_struct(mm, vma))) { + up_write(&mm->mmap_sem); + kmem_cache_free(vm_area_cachep, vma); + return ret; + } mm->total_vm += npages; up_write(&mm->mmap_sem); return 0;