• Home
  • Raw
  • Download

Lines Matching +full:fixed +full:- +full:layout

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * flexible mmap layout support
5 * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
16 #include <linux/elf-randomize.h>
30 if (current->personality & ADDR_COMPAT_LAYOUT) in mmap_is_legacy()
33 if (rlim_stack->rlim_cur == RLIM_INFINITY) in mmap_is_legacy()
55 if (!(current->flags & PF_RANDOMIZE)) in stack_maxrandom_size()
68 unsigned long gap = rlim_stack->rlim_cur; in mmap_base()
80 return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd); in mmap_base()
94 struct mm_struct *mm = current->mm; in radix__arch_get_unmapped_area()
96 int fixed = (flags & MAP_FIXED); in radix__arch_get_unmapped_area() local
101 if (addr >= high_limit || (fixed && (addr + len > high_limit))) in radix__arch_get_unmapped_area()
105 return -ENOMEM; in radix__arch_get_unmapped_area()
107 if (fixed) { in radix__arch_get_unmapped_area()
108 if (addr > high_limit - len) in radix__arch_get_unmapped_area()
109 return -ENOMEM; in radix__arch_get_unmapped_area()
116 if (high_limit - len >= addr && addr >= mmap_min_addr && in radix__arch_get_unmapped_area()
123 info.low_limit = mm->mmap_base; in radix__arch_get_unmapped_area()
138 struct mm_struct *mm = current->mm; in radix__arch_get_unmapped_area_topdown()
140 int fixed = (flags & MAP_FIXED); in radix__arch_get_unmapped_area_topdown() local
145 if (addr >= high_limit || (fixed && (addr + len > high_limit))) in radix__arch_get_unmapped_area_topdown()
149 return -ENOMEM; in radix__arch_get_unmapped_area_topdown()
151 if (fixed) { in radix__arch_get_unmapped_area_topdown()
152 if (addr > high_limit - len) in radix__arch_get_unmapped_area_topdown()
153 return -ENOMEM; in radix__arch_get_unmapped_area_topdown()
160 if (high_limit - len >= addr && addr >= mmap_min_addr && in radix__arch_get_unmapped_area_topdown()
168 info.high_limit = mm->mmap_base + (high_limit - DEFAULT_MAP_WINDOW); in radix__arch_get_unmapped_area_topdown()
174 VM_BUG_ON(addr != -ENOMEM); in radix__arch_get_unmapped_area_topdown()
178 * so fall back to the bottom-up function here. This scenario in radix__arch_get_unmapped_area_topdown()
190 mm->mmap_base = TASK_UNMAPPED_BASE; in radix__arch_pick_mmap_layout()
191 mm->get_unmapped_area = radix__arch_get_unmapped_area; in radix__arch_pick_mmap_layout()
193 mm->mmap_base = mmap_base(random_factor, rlim_stack); in radix__arch_pick_mmap_layout()
194 mm->get_unmapped_area = radix__arch_get_unmapped_area_topdown; in radix__arch_pick_mmap_layout()
205 * process VM image, sets up which VM layout function to use:
211 if (current->flags & PF_RANDOMIZE) in arch_pick_mmap_layout()
218 * Fall back to the standard layout if the personality in arch_pick_mmap_layout()
222 mm->mmap_base = TASK_UNMAPPED_BASE; in arch_pick_mmap_layout()
223 mm->get_unmapped_area = arch_get_unmapped_area; in arch_pick_mmap_layout()
225 mm->mmap_base = mmap_base(random_factor, rlim_stack); in arch_pick_mmap_layout()
226 mm->get_unmapped_area = arch_get_unmapped_area_topdown; in arch_pick_mmap_layout()