Lines Matching full:range
28 static void *execmem_vmalloc(struct execmem_range *range, size_t size, in execmem_vmalloc() argument
31 bool kasan = range->flags & EXECMEM_KASAN_SHADOW; in execmem_vmalloc()
33 unsigned int align = range->alignment; in execmem_vmalloc()
34 unsigned long start = range->start; in execmem_vmalloc()
35 unsigned long end = range->end; in execmem_vmalloc()
47 if (!p && range->fallback_start) { in execmem_vmalloc()
48 start = range->fallback_start; in execmem_vmalloc()
49 end = range->fallback_end; in execmem_vmalloc()
70 struct execmem_range *range = &execmem_info->ranges[EXECMEM_MODULE_DATA]; in execmem_vmap() local
73 area = __get_vm_area_node(size, range->alignment, PAGE_SHIFT, VM_ALLOC, in execmem_vmap()
74 range->start, range->end, NUMA_NO_NODE, in execmem_vmap()
76 if (!area && range->fallback_start) in execmem_vmap()
77 area = __get_vm_area_node(size, range->alignment, PAGE_SHIFT, VM_ALLOC, in execmem_vmap()
78 range->fallback_start, range->fallback_end, in execmem_vmap()
84 static void *execmem_vmalloc(struct execmem_range *range, size_t size, in execmem_vmalloc() argument
189 static bool within_range(struct execmem_range *range, struct ma_state *mas, in within_range() argument
194 if (addr >= range->start && addr + size < range->end) in within_range()
197 if (range->fallback_start && in within_range()
198 addr >= range->fallback_start && addr + size < range->fallback_end) in within_range()
204 static void *__execmem_cache_alloc(struct execmem_range *range, size_t size) in __execmem_cache_alloc() argument
219 if (area_size >= size && within_range(range, &mas_free, size)) in __execmem_cache_alloc()
229 /* insert allocated size to busy_areas at range [addr, addr + size) */ in __execmem_cache_alloc()
240 * re-insert remaining free size to free_areas at range in __execmem_cache_alloc()
257 static int execmem_cache_populate(struct execmem_range *range, size_t size) in execmem_cache_populate() argument
267 p = execmem_vmalloc(range, alloc_size, PAGE_KERNEL, vm_flags); in execmem_cache_populate()
287 err = vmap_pages_range_noflush(start, end, range->pgprot, vm->pages, in execmem_cache_populate()
303 static void *execmem_cache_alloc(struct execmem_range *range, size_t size) in execmem_cache_alloc() argument
308 p = __execmem_cache_alloc(range, size); in execmem_cache_alloc()
312 err = execmem_cache_populate(range, size); in execmem_cache_alloc()
316 return __execmem_cache_alloc(range, size); in execmem_cache_alloc()
348 static void *execmem_cache_alloc(struct execmem_range *range, size_t size) in execmem_cache_alloc() argument
361 struct execmem_range *range = &execmem_info->ranges[type]; in execmem_alloc() local
362 bool use_cache = range->flags & EXECMEM_ROX_CACHE; in execmem_alloc()
364 pgprot_t pgprot = range->pgprot; in execmem_alloc()
368 p = execmem_cache_alloc(range, size); in execmem_alloc()
370 p = execmem_vmalloc(range, size, pgprot, vm_flags); in execmem_alloc()