Lines Matching +full:page +full:- +full:based
1 // SPDX-License-Identifier: GPL-2.0
8 * Some code borrowed from https://github.com/xairy/kasan-prototype by
51 track->pid = current->pid; in kasan_set_track()
52 track->stack = kasan_save_stack(flags, true); in kasan_set_track()
58 current->kasan_depth++; in kasan_enable_current()
64 current->kasan_depth--; in kasan_disable_current()
92 void *base = (void *)((unsigned long)watermark & ~(THREAD_SIZE - 1)); in kasan_unpoison_task_stack_below()
94 kasan_unpoison(base, watermark - base, false); in kasan_unpoison_task_stack_below()
98 bool __kasan_unpoison_pages(struct page *page, unsigned int order, bool init) in __kasan_unpoison_pages() argument
103 if (unlikely(PageHighMem(page))) in __kasan_unpoison_pages()
110 kasan_unpoison(set_tag(page_address(page), tag), in __kasan_unpoison_pages()
113 page_kasan_tag_set(page + i, tag); in __kasan_unpoison_pages()
118 void __kasan_poison_pages(struct page *page, unsigned int order, bool init) in __kasan_poison_pages() argument
120 if (likely(!PageHighMem(page))) in __kasan_poison_pages()
121 kasan_poison(page_address(page), PAGE_SIZE << order, in __kasan_poison_pages()
127 struct page *page = slab_page(slab); in __kasan_poison_slab() local
130 for (i = 0; i < compound_nr(page); i++) in __kasan_poison_slab()
131 page_kasan_tag_reset(page + i); in __kasan_poison_slab()
132 kasan_poison(page_address(page), page_size(page), in __kasan_poison_slab()
138 kasan_unpoison(object, cache->object_size, false); in __kasan_unpoison_object_data()
143 kasan_poison(object, round_up(cache->object_size, KASAN_GRANULE_SIZE), in __kasan_poison_object_data()
158 * based on objects indexes, so that objects that are next to each other
171 if (!cache->ctor && !(cache->flags & SLAB_TYPESAFE_BY_RCU)) in assign_tag()
176 /* For SLAB assign tags based on the object index in the freelist. */ in assign_tag()
190 /* Initialize per-object metadata if it is present. */ in __kasan_init_slab_obj()
221 if (unlikely(cache->flags & SLAB_TYPESAFE_BY_RCU)) in ____kasan_slab_free()
229 kasan_poison(object, round_up(cache->object_size, KASAN_GRANULE_SIZE), in ____kasan_slab_free()
294 ____kasan_slab_free(slab->slab_cache, ptr, ip, false, false); in __kasan_slab_free_mempool()
314 * Generate and assign random tag for tag-based modes. in __kasan_slab_alloc()
324 kasan_unpoison(tagged_object, cache->object_size, init); in __kasan_slab_alloc()
326 /* Save alloc info (if possible) for non-kmalloc() allocations. */ in __kasan_slab_alloc()
354 * The redzone has byte-level precision for the generic mode. in ____kasan_kmalloc()
364 redzone_end = round_up((unsigned long)(object + cache->object_size), in ____kasan_kmalloc()
366 kasan_poison((void *)redzone_start, redzone_end - redzone_start, in ____kasan_kmalloc()
405 * The redzone has byte-level precision for the generic mode. in __kasan_kmalloc_large()
416 kasan_poison((void *)redzone_start, redzone_end - redzone_start, in __kasan_kmalloc_large()
438 /* Piggy-back on kmalloc() instrumentation to poison the redzone. */ in __kasan_krealloc()
442 return ____kasan_kmalloc(slab->slab_cache, object, size, flags); in __kasan_krealloc()