Lines Matching defs:obj_exts
830 unsigned long obj_exts;
834 obj_exts = slab_obj_exts(slab);
835 if (!obj_exts)
840 return (obj_exts >= start) && (obj_exts < end);
2093 return cmpxchg(&slab->obj_exts, 0, OBJEXTS_ALLOC_FAIL) == 0;
2096 static inline void handle_failed_objexts_alloc(unsigned long obj_exts,
2104 if (obj_exts == OBJEXTS_ALLOC_FAIL) {
2116 static inline void handle_failed_objexts_alloc(unsigned long obj_exts,
2123 slab->obj_exts = 0;
2129 * When memory allocation profiling is enabled, the obj_exts array
2132 * always contain at least one allocated object (its own obj_exts array).
2204 old_exts = READ_ONCE(slab->obj_exts);
2210 * obj_exts, no synchronization is required and obj_exts can
2213 slab->obj_exts = new_exts;
2226 } else if (cmpxchg(&slab->obj_exts, old_exts, new_exts) != old_exts) {
2227 /* Retry if a racing thread changed slab->obj_exts from under us. */
2238 struct slabobj_ext *obj_exts;
2240 obj_exts = (struct slabobj_ext *)slab_obj_exts(slab);
2241 if (!obj_exts) {
2243 * If obj_exts allocation failed, slab->obj_exts is set to
2247 slab->obj_exts = 0;
2252 slab->obj_exts = 0;
2257 * obj_exts was created with SLAB_ALLOC_NO_RECURSE flag, therefore its
2261 * the extension for obj_exts is expected to be NULL.
2263 mark_obj_codetag_empty(obj_exts);
2265 kfree(obj_exts);
2267 kfree_nolock(obj_exts);
2268 slab->obj_exts = 0;
2279 unsigned long obj_exts;
2290 obj_exts = (unsigned long)addr;
2292 get_slab_obj_exts(obj_exts);
2294 put_slab_obj_exts(obj_exts);
2297 obj_exts |= MEMCG_DATA_OBJEXTS;
2299 slab->obj_exts = obj_exts;
2303 obj_exts = (unsigned long)slab_address(slab);
2304 obj_exts += s->red_left_pad;
2305 obj_exts += offset;
2307 get_slab_obj_exts(obj_exts);
2311 put_slab_obj_exts(obj_exts);
2314 obj_exts |= MEMCG_DATA_OBJEXTS;
2316 slab->obj_exts = obj_exts;
2370 unsigned long obj_exts;
2384 obj_exts = prepare_slab_obj_exts_hook(s, slab, flags, alloc_flags, object);
2386 * Currently obj_exts is used only for allocation profiling.
2390 if (obj_exts) {
2393 get_slab_obj_exts(obj_exts);
2394 obj_ext = slab_obj_ext(slab, obj_exts, obj_idx);
2396 put_slab_obj_exts(obj_exts);
2416 unsigned long obj_exts;
2418 /* slab->obj_exts might not be NULL if it was created for MEMCG accounting. */
2422 obj_exts = slab_obj_exts(slab);
2423 if (!obj_exts)
2426 get_slab_obj_exts(obj_exts);
2430 alloc_tag_sub(&slab_obj_ext(slab, obj_exts, off)->ref, s->size);
2432 put_slab_obj_exts(obj_exts);
2493 unsigned long obj_exts;
2498 obj_exts = slab_obj_exts(slab);
2499 if (likely(!obj_exts))
2502 get_slab_obj_exts(obj_exts);
2503 __memcg_slab_free_hook(s, slab, p, objects, obj_exts);
2504 put_slab_obj_exts(obj_exts);
2510 unsigned long obj_exts;
2552 obj_exts = slab_obj_exts(slab);
2553 if (obj_exts) {
2554 get_slab_obj_exts(obj_exts);
2556 obj_ext = slab_obj_ext(slab, obj_exts, off);
2558 put_slab_obj_exts(obj_exts);
2561 put_slab_obj_exts(obj_exts);
3378 * might have been disabled after slab->obj_exts got allocated.