|
Lines 181-187
Link Here
|
| 181 |
goto out; |
181 |
goto out; |
| 182 |
|
182 |
|
| 183 |
/* Ok, looks good - let it rip. */ |
183 |
/* Ok, looks good - let it rip. */ |
| 184 |
if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk) |
184 |
if (__do_brk(oldbrk, newbrk-oldbrk) != oldbrk) |
| 185 |
goto out; |
185 |
goto out; |
| 186 |
set_brk: |
186 |
set_brk: |
| 187 |
mm->brk = brk; |
187 |
mm->brk = brk; |
|
Lines 1031-1042
Link Here
|
| 1031 |
return ret; |
1031 |
return ret; |
| 1032 |
} |
1032 |
} |
| 1033 |
|
1033 |
|
|
|
1034 |
|
| 1034 |
/* |
1035 |
/* |
| 1035 |
* this is really a simplified "do_mmap". it only handles |
1036 |
* this is really a simplified "do_mmap". it only handles |
| 1036 |
* anonymous maps. eventually we may be able to do some |
1037 |
* anonymous maps. eventually we may be able to do some |
| 1037 |
* brk-specific accounting here. |
1038 |
* brk-specific accounting here. |
| 1038 |
*/ |
1039 |
*/ |
| 1039 |
unsigned long do_brk(unsigned long addr, unsigned long len) |
1040 |
unsigned long __do_brk(unsigned long addr, unsigned long len) |
| 1040 |
{ |
1041 |
{ |
| 1041 |
struct mm_struct * mm = current->mm; |
1042 |
struct mm_struct * mm = current->mm; |
| 1042 |
struct vm_area_struct * vma, * prev; |
1043 |
struct vm_area_struct * vma, * prev; |
|
Lines 1116-1121
Link Here
|
| 1116 |
return addr; |
1117 |
return addr; |
| 1117 |
} |
1118 |
} |
| 1118 |
|
1119 |
|
|
|
1120 |
/* locking version of __do_brk. */ |
| 1121 |
unsigned long do_brk(unsigned long addr, unsigned long len) |
| 1122 |
{ |
| 1123 |
unsigned long ret; |
| 1124 |
|
| 1125 |
down_write(¤t->mm->mmap_sem); |
| 1126 |
ret = __do_brk(addr, len); |
| 1127 |
up_write(¤t->mm->mmap_sem); |
| 1128 |
|
| 1129 |
return ret; |
| 1130 |
} |
| 1131 |
|
| 1119 |
/* Build the RB tree corresponding to the VMA list. */ |
1132 |
/* Build the RB tree corresponding to the VMA list. */ |
| 1120 |
void build_mmap_rb(struct mm_struct * mm) |
1133 |
void build_mmap_rb(struct mm_struct * mm) |
| 1121 |
{ |
1134 |
{ |