|
|
vma->vm_private_data = NULL; | vma->vm_private_data = NULL; |
down_write(¤t->mm->mmap_sem); | down_write(¤t->mm->mmap_sem); |
{ | { |
insert_vm_struct(current->mm, vma); |
if (insert_vm_struct(current->mm, vma)) { |
|
kmem_cache_free(vm_area_cachep, vma); |
|
up_write(¤t->mm->mmap_sem); |
|
return; |
|
} |
} | } |
up_write(¤t->mm->mmap_sem); | up_write(¤t->mm->mmap_sem); |
} | } |
|
|
vma->vm_private_data = NULL; | vma->vm_private_data = NULL; |
down_write(¤t->mm->mmap_sem); | down_write(¤t->mm->mmap_sem); |
{ | { |
insert_vm_struct(current->mm, vma); |
if (insert_vm_struct(current->mm, vma)) { |
|
kmem_cache_free(vm_area_cachep, vma); |
|
up_write(¤t->mm->mmap_sem); |
|
return; |
|
} |
} | } |
up_write(¤t->mm->mmap_sem); | up_write(¤t->mm->mmap_sem); |
} | } |
|
|
{ | { |
unsigned long stack_base; | unsigned long stack_base; |
struct vm_area_struct *mpnt; | struct vm_area_struct *mpnt; |
int i; |
int i, ret; |
| |
stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; | stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; |
| |
|
|
mpnt->vm_pgoff = 0; | mpnt->vm_pgoff = 0; |
mpnt->vm_file = NULL; | mpnt->vm_file = NULL; |
mpnt->vm_private_data = 0; | mpnt->vm_private_data = 0; |
insert_vm_struct(current->mm, mpnt); |
if ((ret = insert_vm_struct(current->mm, mpnt))) { |
|
up_write(¤t->mm->mmap_sem); |
|
kmem_cache_free(vm_area_cachep, mpnt); |
|
return ret; |
|
} |
current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; | current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; |
} | } |
| |