Lines Matching defs:objp
316 * 0 : objp
332 static unsigned long long *dbg_redzone1(struct kmem_cache *cachep, void *objp)
335 return (unsigned long long *) (objp + obj_offset(cachep) -
339 static unsigned long long *dbg_redzone2(struct kmem_cache *cachep, void *objp)
343 return (unsigned long long *)(objp + cachep->size -
346 return (unsigned long long *) (objp + cachep->size -
350 static void **dbg_userword(struct kmem_cache *cachep, void *objp)
353 return (void **)(objp + cachep->size - BYTES_PER_WORD);
359 #define dbg_redzone1(cachep, objp) ({BUG(); (unsigned long long *)NULL;})
360 #define dbg_redzone2(cachep, objp) ({BUG(); (unsigned long long *)NULL;})
361 #define dbg_userword(cachep, objp) ({BUG(); (void **)NULL;})
552 struct slab *slab, void *objp)
562 free_block(cachep, &objp, 1, slab_node, &list);
592 static __always_inline void __free_one(struct array_cache *ac, void *objp)
596 WARN_ON_ONCE(ac->avail > 0 && ac->entry[ac->avail - 1] == objp))
598 ac->entry[ac->avail++] = objp;
616 static inline int cache_free_alien(struct kmem_cache *cachep, void *objp)
747 static int __cache_free_alien(struct kmem_cache *cachep, void *objp,
765 __free_one(ac, objp);
771 free_block(cachep, &objp, 1, slab_node, &list);
778 static inline int cache_free_alien(struct kmem_cache *cachep, void *objp)
780 int slab_node = slab_nid(virt_to_slab(objp));
789 return __cache_free_alien(cachep, objp, node, slab_node);
1415 static void slab_kernel_map(struct kmem_cache *cachep, void *objp, int map)
1420 __kernel_map_pages(virt_to_page(objp), cachep->size / PAGE_SIZE, map);
1424 static inline void slab_kernel_map(struct kmem_cache *cachep, void *objp,
1470 static void print_objinfo(struct kmem_cache *cachep, void *objp, int lines)
1477 *dbg_redzone1(cachep, objp),
1478 *dbg_redzone2(cachep, objp));
1482 pr_err("Last user: (%pSR)\n", *dbg_userword(cachep, objp));
1483 realobj = (char *)objp + obj_offset(cachep);
1494 static void check_poison_obj(struct kmem_cache *cachep, void *objp)
1503 realobj = (char *)objp + obj_offset(cachep);
1518 print_objinfo(cachep, objp, 0);
1537 struct slab *slab = virt_to_slab(objp);
1540 objnr = obj_to_index(cachep, slab, objp);
1542 objp = index_to_obj(cachep, slab, objnr - 1);
1543 realobj = (char *)objp + obj_offset(cachep);
1545 print_objinfo(cachep, objp, 2);
1548 objp = index_to_obj(cachep, slab, objnr + 1);
1549 realobj = (char *)objp + obj_offset(cachep);
1551 print_objinfo(cachep, objp, 2);
1569 void *objp = index_to_obj(cachep, slab, i);
1572 check_poison_obj(cachep, objp);
1573 slab_kernel_map(cachep, objp, 1);
1576 if (*dbg_redzone1(cachep, objp) != RED_INACTIVE)
1578 if (*dbg_redzone2(cachep, objp) != RED_INACTIVE)
2315 void *objp = index_to_obj(cachep, slab, i);
2318 *dbg_userword(cachep, objp) = NULL;
2321 *dbg_redzone1(cachep, objp) = RED_INACTIVE;
2322 *dbg_redzone2(cachep, objp) = RED_INACTIVE;
2331 objp + obj_offset(cachep));
2332 cachep->ctor(objp + obj_offset(cachep));
2334 cachep, objp + obj_offset(cachep));
2338 if (*dbg_redzone2(cachep, objp) != RED_INACTIVE)
2340 if (*dbg_redzone1(cachep, objp) != RED_INACTIVE)
2345 poison_obj(cachep, objp, POISON_FREE);
2346 slab_kernel_map(cachep, objp, 0);
2456 void *objp;
2470 objp = index_to_obj(cachep, slab, i);
2471 objp = kasan_init_slab_obj(cachep, objp);
2475 kasan_unpoison_object_data(cachep, objp);
2476 cachep->ctor(objp);
2477 kasan_poison_object_data(cachep, objp);
2487 void *objp;
2489 objp = index_to_obj(cachep, slab, get_free_obj(slab, slab->active));
2492 return objp;
2496 struct slab *slab, void *objp)
2498 unsigned int objnr = obj_to_index(cachep, slab, objp);
2505 pr_err("slab: double free detected in cache '%s', objp %px\n",
2506 cachep->name, objp);
2513 slab->freelist = objp + obj_offset(cachep);
2634 static void kfree_debugcheck(const void *objp)
2636 if (!virt_addr_valid(objp)) {
2638 (unsigned long)objp);
2665 static void *cache_free_debugcheck(struct kmem_cache *cachep, void *objp,
2671 BUG_ON(virt_to_cache(objp) != cachep);
2673 objp -= obj_offset(cachep);
2674 kfree_debugcheck(objp);
2675 slab = virt_to_slab(objp);
2678 verify_redzone_free(cachep, objp);
2679 *dbg_redzone1(cachep, objp) = RED_INACTIVE;
2680 *dbg_redzone2(cachep, objp) = RED_INACTIVE;
2683 *dbg_userword(cachep, objp) = (void *)caller;
2685 objnr = obj_to_index(cachep, slab, objp);
2688 BUG_ON(objp != index_to_obj(cachep, slab, objnr));
2691 poison_obj(cachep, objp, POISON_FREE);
2692 slab_kernel_map(cachep, objp, 0);
2694 return objp;
2699 #define cache_free_debugcheck(x, objp, z) (objp)
2707 void *objp;
2710 objp = next - obj_offset(cachep);
2712 poison_obj(cachep, objp, POISON_FREE);
2729 void **objp = slab->freelist;
2731 *objp = *list;
2732 *list = objp;
2944 gfp_t flags, void *objp, unsigned long caller)
2947 if (!objp || is_kfence_address(objp))
2948 return objp;
2950 check_poison_obj(cachep, objp);
2951 slab_kernel_map(cachep, objp, 1);
2952 poison_obj(cachep, objp, POISON_INUSE);
2955 *dbg_userword(cachep, objp) = (void *)caller;
2958 if (*dbg_redzone1(cachep, objp) != RED_INACTIVE ||
2959 *dbg_redzone2(cachep, objp) != RED_INACTIVE) {
2962 objp, *dbg_redzone1(cachep, objp),
2963 *dbg_redzone2(cachep, objp));
2965 *dbg_redzone1(cachep, objp) = RED_ACTIVE;
2966 *dbg_redzone2(cachep, objp) = RED_ACTIVE;
2969 objp += obj_offset(cachep);
2971 cachep->ctor(objp);
2972 if ((unsigned long)objp & (arch_slab_minalign() - 1)) {
2973 pr_err("0x%px: not aligned to arch_slab_minalign()=%u\n", objp,
2976 return objp;
2979 #define cache_alloc_debugcheck_after(a, b, objp, d) (objp)
2984 void *objp;
2992 objp = ac->entry[--ac->avail];
2999 objp = cache_alloc_refill(cachep, flags);
3012 if (objp)
3014 return objp;
3167 void *objp = NULL;
3172 objp = alternate_node_alloc(cachep, flags);
3173 if (objp)
3182 objp = ____cache_alloc(cachep, flags);
3185 objp = ____cache_alloc(cachep, flags);
3188 objp = fallback_alloc(cachep, flags);
3196 if (!objp)
3197 objp = ____cache_alloc_node(cachep, flags, nodeid);
3199 return objp;
3216 void *objp;
3225 objp = kfence_alloc(cachep, orig_size, flags);
3226 if (unlikely(objp))
3230 objp = __do_cache_alloc(cachep, flags, nodeid);
3232 objp = cache_alloc_debugcheck_after(cachep, flags, objp, caller);
3233 prefetchw(objp);
3237 slab_post_alloc_hook(cachep, objcg, flags, 1, &objp, init,
3239 return objp;
3264 void *objp;
3267 objp = objpp[i];
3269 slab = virt_to_slab(objp);
3272 slab_put_obj(cachep, slab, objp);
3348 static __always_inline void __cache_free(struct kmem_cache *cachep, void *objp,
3353 memcg_slab_free_hook(cachep, virt_to_slab(objp), &objp, 1);
3355 if (is_kfence_address(objp)) {
3356 kmemleak_free_recursive(objp, cachep->flags);
3357 __kfence_free(objp);
3368 memset(objp, 0, cachep->object_size);
3369 /* KASAN might put objp into memory quarantine, delaying its reuse. */
3370 if (kasan_slab_free(cachep, objp, init))
3375 __kcsan_check_access(objp, cachep->object_size,
3378 ___cache_free(cachep, objp, caller);
3381 void ___cache_free(struct kmem_cache *cachep, void *objp,
3387 kmemleak_free_recursive(objp, cachep->flags);
3388 objp = cache_free_debugcheck(cachep, objp, caller);
3397 if (nr_online_nodes > 1 && cache_free_alien(cachep, objp))
3408 struct slab *slab = virt_to_slab(objp);
3411 cache_free_pfmemalloc(cachep, slab, objp);
3416 __free_one(ac, objp);
3466 void *objp = kfence_alloc(s, s->object_size, flags) ?:
3469 if (unlikely(!objp))
3471 p[i] = objp;
3530 void *objp;
3536 objp = object - obj_offset(cachep);
3538 slab = virt_to_slab(objp);
3539 objnr = obj_to_index(cachep, slab, objp);
3540 objp = index_to_obj(cachep, slab, objnr);
3541 kpp->kp_objp = objp;
3543 kpp->kp_ret = *dbg_userword(cachep, objp);
3548 void __do_kmem_cache_free(struct kmem_cache *cachep, void *objp,
3554 debug_check_no_locks_freed(objp, cachep->object_size);
3556 debug_check_no_obj_freed(objp, cachep->object_size);
3557 __cache_free(cachep, objp, caller);
3561 void __kmem_cache_free(struct kmem_cache *cachep, void *objp,
3564 __do_kmem_cache_free(cachep, objp, caller);
3570 * @objp: The previously allocated object.
3575 void kmem_cache_free(struct kmem_cache *cachep, void *objp)
3577 cachep = cache_from_obj(cachep, objp);
3581 trace_kmem_cache_free(_RET_IP_, objp, cachep);
3582 __do_kmem_cache_free(cachep, objp, _RET_IP_);
3592 void *objp = p[i];
3596 struct folio *folio = virt_to_folio(objp);
3601 free_large_kmalloc(folio, objp);
3607 s = cache_from_obj(orig_s, objp);
3613 debug_check_no_locks_freed(objp, s->object_size);
3615 debug_check_no_obj_freed(objp, s->object_size);
3617 __cache_free(s, objp, _RET_IP_);