Lines Matching refs:meta

105 static void kfence_print_stack(struct seq_file *seq, const struct kfence_metadata *meta,
108 const struct kfence_track *track = show_alloc ? &meta->alloc_track : &meta->free_track;
129 void kfence_print_object(struct seq_file *seq, const struct kfence_metadata *meta)
131 const int size = abs(meta->size);
132 const unsigned long start = meta->addr;
133 const struct kmem_cache *const cache = meta->cache;
135 lockdep_assert_held(&meta->lock);
137 if (meta->state == KFENCE_OBJECT_UNUSED) {
138 seq_con_printf(seq, "kfence-#%td unused\n", meta - kfence_metadata);
143 meta - kfence_metadata, (void *)start, (void *)(start + size - 1),
146 kfence_print_stack(seq, meta, true);
148 if (meta->state == KFENCE_OBJECT_FREED) {
150 kfence_print_stack(seq, meta, false);
159 const struct kfence_metadata *meta)
165 end = (const u8 *)(address < meta->addr ? min(show_until_addr, meta->addr)
186 const struct kfence_metadata *meta, enum kfence_error_type type)
189 const ptrdiff_t object_index = meta ? meta - kfence_metadata : -1;
200 /* Require non-NULL meta, except if KFENCE_ERROR_INVALID. */
201 if (WARN_ON(type != KFENCE_ERROR_INVALID && !meta))
204 if (meta)
205 lockdep_assert_held(&meta->lock);
221 const bool left_of_object = address < meta->addr;
227 left_of_object ? meta->addr - address : address - meta->addr,
240 print_diff_canary(address, 16, meta);
259 if (meta) {
261 kfence_print_object(NULL, meta);
295 struct kfence_metadata *meta = addr_to_metadata((unsigned long)object);
298 if (!meta)
308 if (WARN_ON(meta->state == KFENCE_OBJECT_UNUSED))
311 raw_spin_lock_irqsave(&meta->lock, flags);
314 kpp->kp_slab_cache = meta->cache;
315 kpp->kp_objp = (void *)meta->addr;
316 kfence_to_kp_stack(&meta->alloc_track, kpp->kp_stack);
317 if (meta->state == KFENCE_OBJECT_FREED)
318 kfence_to_kp_stack(&meta->free_track, kpp->kp_free_stack);
322 raw_spin_unlock_irqrestore(&meta->lock, flags);