diff options
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -36,6 +36,10 @@ | |||
36 | #define arch_mmap_check(addr, len, flags) (0) | 36 | #define arch_mmap_check(addr, len, flags) (0) |
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | #ifndef arch_rebalance_pgtables | ||
40 | #define arch_rebalance_pgtables(addr, len) (addr) | ||
41 | #endif | ||
42 | |||
39 | static void unmap_region(struct mm_struct *mm, | 43 | static void unmap_region(struct mm_struct *mm, |
40 | struct vm_area_struct *vma, struct vm_area_struct *prev, | 44 | struct vm_area_struct *vma, struct vm_area_struct *prev, |
41 | unsigned long start, unsigned long end); | 45 | unsigned long start, unsigned long end); |
@@ -241,7 +245,7 @@ asmlinkage unsigned long sys_brk(unsigned long brk) | |||
241 | 245 | ||
242 | down_write(&mm->mmap_sem); | 246 | down_write(&mm->mmap_sem); |
243 | 247 | ||
244 | if (brk < mm->end_code) | 248 | if (brk < mm->start_brk) |
245 | goto out; | 249 | goto out; |
246 | 250 | ||
247 | /* | 251 | /* |
@@ -1424,7 +1428,7 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, | |||
1424 | if (addr & ~PAGE_MASK) | 1428 | if (addr & ~PAGE_MASK) |
1425 | return -EINVAL; | 1429 | return -EINVAL; |
1426 | 1430 | ||
1427 | return addr; | 1431 | return arch_rebalance_pgtables(addr, len); |
1428 | } | 1432 | } |
1429 | 1433 | ||
1430 | EXPORT_SYMBOL(get_unmapped_area); | 1434 | EXPORT_SYMBOL(get_unmapped_area); |
@@ -2216,7 +2220,7 @@ int install_special_mapping(struct mm_struct *mm, | |||
2216 | vma->vm_start = addr; | 2220 | vma->vm_start = addr; |
2217 | vma->vm_end = addr + len; | 2221 | vma->vm_end = addr + len; |
2218 | 2222 | ||
2219 | vma->vm_flags = vm_flags | mm->def_flags; | 2223 | vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND; |
2220 | vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); | 2224 | vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); |
2221 | 2225 | ||
2222 | vma->vm_ops = &special_mapping_vmops; | 2226 | vma->vm_ops = &special_mapping_vmops; |