X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=mm%2Fmmap.c;h=56e76ac1c7231bc3a0eda86dec644180fa7eb5e5;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=3ea3ddcf6f7425e4b33802be6deb22fdb4cff63b;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/mm/mmap.c b/mm/mmap.c index 3ea3ddcf6..56e76ac1c 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -33,10 +33,6 @@ #include #include -#ifndef arch_mmap_check -#define arch_mmap_check(addr, len, flags) (0) -#endif - static void unmap_region(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev, unsigned long start, unsigned long end); @@ -67,13 +63,6 @@ pgprot_t protection_map[16] = { __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111 }; -pgprot_t vm_get_page_prot(unsigned long vm_flags) -{ - return protection_map[vm_flags & - (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]; -} -EXPORT_SYMBOL(vm_get_page_prot); - int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ int sysctl_overcommit_ratio = 50; /* default is 50% */ int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; @@ -110,7 +99,7 @@ int __vm_enough_memory(long pages, int cap_sys_admin) if (sysctl_overcommit_memory == OVERCOMMIT_GUESS) { unsigned long n; - free = global_page_state(NR_FILE_PAGES); + free = get_page_cache_size(); free += nr_swap_pages; /* @@ -1089,8 +1078,7 @@ munmap_back: vma->vm_start = addr; vma->vm_end = addr + len; vma->vm_flags = vm_flags; - vma->vm_page_prot = protection_map[vm_flags & - (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]; + vma->vm_page_prot = protection_map[vm_flags & 0x0f]; vma->vm_pgoff = pgoff; if (file) { @@ -1131,10 +1119,6 @@ munmap_back: pgoff = vma->vm_pgoff; vm_flags = vma->vm_flags; - if (vma_wants_writenotify(vma)) - vma->vm_page_prot = - protection_map[vm_flags & (VM_READ|VM_WRITE|VM_EXEC)]; - if (!file || !vma_merge(mm, prev, addr, vma->vm_end, vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) { file = vma->vm_file; @@ -1410,7 +1394,7 @@ get_unmapped_area_prot(struct file *file, unsigned long addr, unsigned long len, EXPORT_SYMBOL(get_unmapped_area_prot); -#define SHLIB_BASE 0x00110000 +#define SHLIB_BASE 0x00111000 unsigned long arch_get_unmapped_exec_area(struct file *filp, unsigned long addr0, unsigned long len0, unsigned long pgoff, unsigned long flags) @@ -2039,8 +2023,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len) vma->vm_end = addr + len; vma->vm_pgoff = pgoff; vma->vm_flags = flags; - vma->vm_page_prot = protection_map[flags & - (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]; + vma->vm_page_prot = protection_map[flags & 0x0f]; vma_link(mm, vma, prev, rb_link, rb_parent); out: vx_vmpages_add(mm, len >> PAGE_SHIFT); @@ -2257,7 +2240,7 @@ int install_special_mapping(struct mm_struct *mm, vma->vm_private_data = pages; insert_vm_struct(mm, vma); - vx_vmpages_add(mm, len >> PAGE_SHIFT); + mm->total_vm += len >> PAGE_SHIFT; if (!vdso_populate) return 0;