Lines Matching full:object

136 void __kasan_unpoison_object_data(struct kmem_cache *cache, void *object)  in __kasan_unpoison_object_data()  argument
138 kasan_unpoison(object, cache->object_size, false); in __kasan_unpoison_object_data()
141 void __kasan_poison_object_data(struct kmem_cache *cache, void *object) in __kasan_poison_object_data() argument
143 kasan_poison(object, round_up(cache->object_size, KASAN_GRANULE_SIZE), in __kasan_poison_object_data()
148 * This function assigns a tag to an object considering the following:
150 * object somewhere (e.g. in the object itself). We preassign a tag for
151 * each object in caches with constructors during slab creation and reuse
152 * the same tag each time a particular object is allocated.
162 const void *object, bool init) in assign_tag() argument
169 * set, assign a tag when the object is being allocated (init == false). in assign_tag()
176 /* For SLAB assign tags based on the object index in the freelist. */ in assign_tag()
177 return (u8)obj_to_index(cache, virt_to_slab(object), (void *)object); in assign_tag()
183 return init ? kasan_random_tag() : get_tag(object); in assign_tag()
188 const void *object) in __kasan_init_slab_obj() argument
190 /* Initialize per-object metadata if it is present. */ in __kasan_init_slab_obj()
192 kasan_init_object_meta(cache, object); in __kasan_init_slab_obj()
195 object = set_tag(object, assign_tag(cache, object, true)); in __kasan_init_slab_obj()
197 return (void *)object; in __kasan_init_slab_obj()
200 static inline bool ____kasan_slab_free(struct kmem_cache *cache, void *object, in ____kasan_slab_free() argument
208 tagged_object = object; in ____kasan_slab_free()
209 object = kasan_reset_tag(object); in ____kasan_slab_free()
211 if (is_kfence_address(object)) in ____kasan_slab_free()
214 if (unlikely(nearest_obj(cache, virt_to_slab(object), object) != in ____kasan_slab_free()
215 object)) { in ____kasan_slab_free()
229 kasan_poison(object, round_up(cache->object_size, KASAN_GRANULE_SIZE), in ____kasan_slab_free()
238 return kasan_quarantine_put(cache, object); in ____kasan_slab_free()
241 bool __kasan_slab_free(struct kmem_cache *cache, void *object, in __kasan_slab_free() argument
244 return ____kasan_slab_free(cache, object, ip, true, init); in __kasan_slab_free()
263 * The object will be poisoned by kasan_poison_pages() or in ____kasan_kfree_large()
299 void *object, gfp_t flags, bool init) in __kasan_slab_alloc() argument
307 if (unlikely(object == NULL)) in __kasan_slab_alloc()
310 if (is_kfence_address(object)) in __kasan_slab_alloc()
311 return (void *)object; in __kasan_slab_alloc()
317 tag = assign_tag(cache, object, false); in __kasan_slab_alloc()
318 tagged_object = set_tag(object, tag); in __kasan_slab_alloc()
321 * Unpoison the whole object. in __kasan_slab_alloc()
334 const void *object, size_t size, gfp_t flags) in ____kasan_kmalloc() argument
342 if (unlikely(object == NULL)) in ____kasan_kmalloc()
345 if (is_kfence_address(kasan_reset_tag(object))) in ____kasan_kmalloc()
346 return (void *)object; in ____kasan_kmalloc()
349 * The object has already been unpoisoned by kasan_slab_alloc() for in ____kasan_kmalloc()
355 * Partially poison the last object granule to cover the unaligned in ____kasan_kmalloc()
359 kasan_poison_last_granule((void *)object, size); in ____kasan_kmalloc()
362 redzone_start = round_up((unsigned long)(object + size), in ____kasan_kmalloc()
364 redzone_end = round_up((unsigned long)(object + cache->object_size), in ____kasan_kmalloc()
374 kasan_save_alloc_info(cache, (void *)object, flags); in ____kasan_kmalloc()
377 return (void *)object; in ____kasan_kmalloc()
380 void * __must_check __kasan_kmalloc(struct kmem_cache *cache, const void *object, in __kasan_kmalloc() argument
383 return ____kasan_kmalloc(cache, object, size, flags); in __kasan_kmalloc()
400 * The object has already been unpoisoned by kasan_unpoison_pages() for in __kasan_kmalloc_large()
406 * Partially poison the last object granule to cover the unaligned in __kasan_kmalloc_large()
422 void * __must_check __kasan_krealloc(const void *object, size_t size, gfp_t flags) in __kasan_krealloc() argument
426 if (unlikely(object == ZERO_SIZE_PTR)) in __kasan_krealloc()
427 return (void *)object; in __kasan_krealloc()
430 * Unpoison the object's data. in __kasan_krealloc()
434 kasan_unpoison(object, size, false); in __kasan_krealloc()
436 slab = virt_to_slab(object); in __kasan_krealloc()
440 return __kasan_kmalloc_large(object, size, flags); in __kasan_krealloc()
442 return ____kasan_kmalloc(slab->slab_cache, object, size, flags); in __kasan_krealloc()