Lines Matching refs:addr

69 #define arch_mmap_check(addr, len, flags)	(0)
195 static int do_brk_flags(unsigned long addr, unsigned long request, unsigned long flags,
534 static int find_vma_links(struct mm_struct *mm, unsigned long addr,
549 if (vma_tmp->vm_end > addr) {
613 unsigned long addr, unsigned long end)
619 vma = find_vma_intersection(mm, addr, end);
624 max(addr, vma->vm_start)) >> PAGE_SHIFT;
1127 * Given a mapping request (addr,end,vm_flags,file,pgoff,anon_name),
1131 * In most cases - when called for mmap, brk or mremap - [addr,end) is
1170 struct vm_area_struct *prev, unsigned long addr,
1177 pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
1194 VM_WARN_ON(prev && addr <= prev->vm_start);
1196 VM_WARN_ON(addr >= end);
1201 if (prev && prev->vm_end == addr &&
1238 if (prev && addr < prev->vm_end) /* case 4 */
1240 addr, prev->vm_pgoff, NULL, next);
1242 err = __vma_adjust(area, addr, next->vm_end,
1352 * If a hint addr is less than mmap_min_addr change hint to be as
1417 unsigned long do_mmap(struct file *file, unsigned long addr,
1447 addr = round_hint_to_min(addr);
1465 addr = get_unmapped_area(file, addr, len, pgoff, flags);
1466 if (IS_ERR_VALUE(addr))
1467 return addr;
1470 struct vm_area_struct *vma = find_vma(mm, addr);
1472 if (vma && vma->vm_start < addr + len)
1578 * Set pgoff according to addr for anon_vma.
1580 pgoff = addr >> PAGE_SHIFT;
1611 addr = mmap_region(file, addr, len, vm_flags, pgoff, uf);
1612 if (!IS_ERR_VALUE(addr) &&
1616 return addr;
1619 unsigned long ksys_mmap_pgoff(unsigned long addr, unsigned long len,
1662 retval = vm_mmap_pgoff(file, addr, len, prot, flags, pgoff);
1675 SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
1679 return ksys_mmap_pgoff(addr, len, prot, flags, fd, pgoff);
1684 unsigned long addr;
1701 return ksys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
1764 unsigned long mmap_region(struct file *file, unsigned long addr,
1782 nr_pages = count_vma_pages_range(mm, addr, addr + len);
1790 if (munmap_vma_range(mm, addr, len, &prev, &rb_link, &rb_parent, uf))
1805 vma = vma_merge(mm, prev, addr, addr + len, vm_flags,
1821 vma->vm_start = addr;
1822 vma->vm_end = addr + len;
1849 /* Can addr have changed??
1853 * Bug: If addr is changed, prev, rb_link, rb_parent should
1856 WARN_ON_ONCE(addr != vma->vm_start);
1858 addr = vma->vm_start;
1936 return addr;
2175 unsigned long addr;
2178 addr = unmapped_area_topdown(info);
2180 addr = unmapped_area(info);
2182 trace_vm_unmapped_area(addr, info);
2183 return addr;
2187 * For shmat() with addr=0.
2199 arch_get_unmapped_area(struct file *filp, unsigned long addr,
2206 const unsigned long mmap_end = arch_get_mmap_end(addr);
2211 xpm_addr = xpm_get_unmapped_area_hook(addr, len, flags, 0);
2216 return addr;
2218 if (addr) {
2219 addr = PAGE_ALIGN(addr);
2220 vma = find_vma_prev(mm, addr, &prev);
2221 if (mmap_end - len >= addr && addr >= mmap_min_addr &&
2222 (!vma || addr + len <= vm_start_gap(vma)) &&
2223 (!prev || addr >= vm_end_gap(prev)) &&
2224 (xpm_region_outer_hook(addr, addr + len, 0)))
2225 return addr;
2244 arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
2252 const unsigned long mmap_end = arch_get_mmap_end(addr);
2258 xpm_addr = xpm_get_unmapped_area_hook(addr, len, flags,
2264 return addr;
2267 if (addr) {
2268 addr = PAGE_ALIGN(addr);
2269 vma = find_vma_prev(mm, addr, &prev);
2270 if (mmap_end - len >= addr && addr >= mmap_min_addr &&
2271 (!vma || addr + len <= vm_start_gap(vma)) &&
2272 (!prev || addr >= vm_end_gap(prev)) &&
2273 (xpm_region_outer_hook(addr, addr + len, 0)))
2274 return addr;
2280 info.high_limit = arch_get_mmap_base(addr, mm->mmap_base);
2283 addr = vm_unmapped_area(&info);
2291 if (offset_in_page(addr)) {
2292 VM_BUG_ON(addr != -ENOMEM);
2296 addr = vm_unmapped_area(&info);
2299 return addr;
2304 get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
2310 unsigned long error = arch_mmap_check(addr, len, flags);
2332 addr = get_area(file, addr, len, pgoff, flags);
2333 if (IS_ERR_VALUE(addr))
2334 return addr;
2336 if (addr > TASK_SIZE - len)
2338 if (offset_in_page(addr))
2341 error = security_mmap_addr(addr);
2342 return error ? error : addr;
2347 /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */
2348 struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
2354 vma = vmacache_find(mm, addr);
2365 if (tmp->vm_end > addr) {
2367 if (tmp->vm_start <= addr)
2375 vmacache_update(addr, vma);
2385 find_vma_prev(struct mm_struct *mm, unsigned long addr,
2390 vma = find_vma(mm, addr);
2639 find_extend_vma(struct mm_struct *mm, unsigned long addr)
2643 addr &= PAGE_MASK;
2644 vma = find_vma_prev(mm, addr, &prev);
2645 if (vma && (vma->vm_start <= addr))
2648 if (!prev || expand_stack(prev, addr))
2651 populate_vma_page_range(prev, addr, prev->vm_end, NULL);
2661 find_extend_vma(struct mm_struct *mm, unsigned long addr)
2666 addr &= PAGE_MASK;
2667 vma = find_vma(mm, addr);
2670 if (vma->vm_start <= addr)
2675 if (expand_stack(vma, addr))
2678 populate_vma_page_range(vma, addr, start, NULL);
2794 unsigned long addr, int new_below)
2800 err = vma->vm_ops->split(vma, addr);
2810 new->vm_end = addr;
2812 new->vm_start = addr;
2813 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
2831 err = vma_adjust(vma, addr, vma->vm_end, vma->vm_pgoff +
2832 ((addr - new->vm_start) >> PAGE_SHIFT), new);
2834 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
2854 * Split a vma into two pieces at address 'addr', a new vma is allocated
2858 unsigned long addr, int new_below)
2863 return __split_vma(mm, vma, addr, new_below);
3023 SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
3025 addr = untagged_addr(addr);
3026 profile_munmap(addr);
3027 return __vm_munmap(addr, len, true);
3135 static int do_brk_flags(unsigned long addr, unsigned long len, unsigned long flags, struct list_head *uf)
3140 pgoff_t pgoff = addr >> PAGE_SHIFT;
3149 mapped_addr = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED);
3158 if (munmap_vma_range(mm, addr, len, &prev, &rb_link, &rb_parent, uf))
3172 vma = vma_merge(mm, prev, addr, addr + len, flags,
3187 vma->vm_start = addr;
3188 vma->vm_end = addr + len;
3203 int vm_brk_flags(unsigned long addr, unsigned long request, unsigned long flags)
3220 ret = do_brk_flags(addr, len, flags, &uf);
3225 mm_populate(addr, len);
3230 int vm_brk(unsigned long addr, unsigned long len)
3232 return vm_brk_flags(addr, len, 0);
3349 unsigned long addr, unsigned long len, pgoff_t pgoff,
3364 pgoff = addr >> PAGE_SHIFT;
3368 if (find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent))
3370 new_vma = vma_merge(mm, prev, addr, addr + len, vma->vm_flags,
3399 new_vma->vm_start = addr;
3400 new_vma->vm_end = addr + len;
3537 unsigned long addr, unsigned long len,
3548 vma->vm_start = addr;
3549 vma->vm_end = addr + len;
3591 unsigned long addr, unsigned long len,
3594 return __install_special_mapping(mm, addr, len, vm_flags, (void *)spec,
3599 unsigned long addr, unsigned long len,
3603 mm, addr, len, vm_flags, (void *)pages,