Lines Matching refs:meta
106 static void kfence_print_stack(struct seq_file *seq, const struct kfence_metadata *meta, in kfence_print_stack() argument
109 const struct kfence_track *track = show_alloc ? &meta->alloc_track : &meta->free_track; in kfence_print_stack()
130 void kfence_print_object(struct seq_file *seq, const struct kfence_metadata *meta) in kfence_print_object() argument
132 const int size = abs(meta->size); in kfence_print_object()
133 const unsigned long start = meta->addr; in kfence_print_object()
134 const struct kmem_cache *const cache = meta->cache; in kfence_print_object()
136 lockdep_assert_held(&meta->lock); in kfence_print_object()
138 if (meta->state == KFENCE_OBJECT_UNUSED) { in kfence_print_object()
139 seq_con_printf(seq, "kfence-#%td unused\n", meta - kfence_metadata); in kfence_print_object()
144 meta - kfence_metadata, (void *)start, (void *)(start + size - 1), in kfence_print_object()
147 kfence_print_stack(seq, meta, true); in kfence_print_object()
149 if (meta->state == KFENCE_OBJECT_FREED) { in kfence_print_object()
151 kfence_print_stack(seq, meta, false); in kfence_print_object()
160 const struct kfence_metadata *meta) in print_diff_canary() argument
166 end = (const u8 *)(address < meta->addr ? min(show_until_addr, meta->addr) in print_diff_canary()
187 const struct kfence_metadata *meta, enum kfence_error_type type) in kfence_report_error() argument
190 const ptrdiff_t object_index = meta ? meta - kfence_metadata : -1; in kfence_report_error()
202 if (WARN_ON(type != KFENCE_ERROR_INVALID && !meta)) in kfence_report_error()
205 if (meta) in kfence_report_error()
206 lockdep_assert_held(&meta->lock); in kfence_report_error()
222 const bool left_of_object = address < meta->addr; in kfence_report_error()
228 left_of_object ? meta->addr - address : address - meta->addr, in kfence_report_error()
241 print_diff_canary(address, 16, meta); in kfence_report_error()
260 if (meta) { in kfence_report_error()
262 kfence_print_object(NULL, meta); in kfence_report_error()
296 struct kfence_metadata *meta = addr_to_metadata((unsigned long)object); in __kfence_obj_info() local
299 if (!meta) in __kfence_obj_info()
309 if (WARN_ON(meta->state == KFENCE_OBJECT_UNUSED)) in __kfence_obj_info()
312 raw_spin_lock_irqsave(&meta->lock, flags); in __kfence_obj_info()
315 kpp->kp_slab_cache = meta->cache; in __kfence_obj_info()
316 kpp->kp_objp = (void *)meta->addr; in __kfence_obj_info()
317 kfence_to_kp_stack(&meta->alloc_track, kpp->kp_stack); in __kfence_obj_info()
318 if (meta->state == KFENCE_OBJECT_FREED) in __kfence_obj_info()
319 kfence_to_kp_stack(&meta->free_track, kpp->kp_free_stack); in __kfence_obj_info()
323 raw_spin_unlock_irqrestore(&meta->lock, flags); in __kfence_obj_info()