Lines 82-88
ia64_elf32_init (struct pt_regs *regs)
Link Here
|
82 |
vma->vm_ops = &ia32_shared_page_vm_ops; |
82 |
vma->vm_ops = &ia32_shared_page_vm_ops; |
83 |
down_write(¤t->mm->mmap_sem); |
83 |
down_write(¤t->mm->mmap_sem); |
84 |
{ |
84 |
{ |
85 |
insert_vm_struct(current->mm, vma); |
85 |
if (insert_vm_struct(current->mm, vma)) { |
|
|
86 |
kmem_cache_free(vm_area_cachep, vma); |
87 |
up_write(¤t->mm->mmap_sem); |
88 |
return; |
89 |
} |
86 |
} |
90 |
} |
87 |
up_write(¤t->mm->mmap_sem); |
91 |
up_write(¤t->mm->mmap_sem); |
88 |
} |
92 |
} |
Lines 101-107
ia64_elf32_init (struct pt_regs *regs)
Link Here
|
101 |
vma->vm_flags = VM_READ|VM_WRITE|VM_MAYREAD|VM_MAYWRITE; |
105 |
vma->vm_flags = VM_READ|VM_WRITE|VM_MAYREAD|VM_MAYWRITE; |
102 |
down_write(¤t->mm->mmap_sem); |
106 |
down_write(¤t->mm->mmap_sem); |
103 |
{ |
107 |
{ |
104 |
insert_vm_struct(current->mm, vma); |
108 |
if (insert_vm_struct(current->mm, vma)) { |
|
|
109 |
kmem_cache_free(vm_area_cachep, vma); |
110 |
up_write(¤t->mm->mmap_sem); |
111 |
return; |
112 |
} |
105 |
} |
113 |
} |
106 |
up_write(¤t->mm->mmap_sem); |
114 |
up_write(¤t->mm->mmap_sem); |
107 |
} |
115 |
} |
Lines 149-155
ia32_setup_arg_pages (struct linux_binpr
Link Here
|
149 |
unsigned long stack_base; |
157 |
unsigned long stack_base; |
150 |
struct vm_area_struct *mpnt; |
158 |
struct vm_area_struct *mpnt; |
151 |
struct mm_struct *mm = current->mm; |
159 |
struct mm_struct *mm = current->mm; |
152 |
int i; |
160 |
int i, ret; |
153 |
|
161 |
|
154 |
stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; |
162 |
stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; |
155 |
mm->arg_start = bprm->p + stack_base; |
163 |
mm->arg_start = bprm->p + stack_base; |
Lines 182-189
ia32_setup_arg_pages (struct linux_binpr
Link Here
|
182 |
else |
190 |
else |
183 |
mpnt->vm_flags = VM_STACK_FLAGS; |
191 |
mpnt->vm_flags = VM_STACK_FLAGS; |
184 |
mpnt->vm_page_prot = (mpnt->vm_flags & VM_EXEC)? |
192 |
mpnt->vm_page_prot = (mpnt->vm_flags & VM_EXEC)? |
185 |
PAGE_COPY_EXEC: PAGE_COPY; |
193 |
PAGE_COPY_EXEC: PAGE_COPY; |
186 |
insert_vm_struct(current->mm, mpnt); |
194 |
if ((ret = insert_vm_struct(current->mm, mpnt))) { |
|
|
195 |
up_write(¤t->mm->mmap_sem); |
196 |
kmem_cache_free(vm_area_cachep, mpnt); |
197 |
return ret; |
198 |
} |
187 |
current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; |
199 |
current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; |
188 |
} |
200 |
} |
189 |
|
201 |
|