cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

debugobjects.c (36194B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Generic infrastructure for lifetime debugging of objects.
      4 *
      5 * Copyright (C) 2008, Thomas Gleixner <tglx@linutronix.de>
      6 */
      7
      8#define pr_fmt(fmt) "ODEBUG: " fmt
      9
     10#include <linux/debugobjects.h>
     11#include <linux/interrupt.h>
     12#include <linux/sched.h>
     13#include <linux/sched/task_stack.h>
     14#include <linux/seq_file.h>
     15#include <linux/debugfs.h>
     16#include <linux/slab.h>
     17#include <linux/hash.h>
     18#include <linux/kmemleak.h>
     19#include <linux/cpu.h>
     20
     21#define ODEBUG_HASH_BITS	14
     22#define ODEBUG_HASH_SIZE	(1 << ODEBUG_HASH_BITS)
     23
     24#define ODEBUG_POOL_SIZE	1024
     25#define ODEBUG_POOL_MIN_LEVEL	256
     26#define ODEBUG_POOL_PERCPU_SIZE	64
     27#define ODEBUG_BATCH_SIZE	16
     28
     29#define ODEBUG_CHUNK_SHIFT	PAGE_SHIFT
     30#define ODEBUG_CHUNK_SIZE	(1 << ODEBUG_CHUNK_SHIFT)
     31#define ODEBUG_CHUNK_MASK	(~(ODEBUG_CHUNK_SIZE - 1))
     32
     33/*
     34 * We limit the freeing of debug objects via workqueue at a maximum
     35 * frequency of 10Hz and about 1024 objects for each freeing operation.
     36 * So it is freeing at most 10k debug objects per second.
     37 */
     38#define ODEBUG_FREE_WORK_MAX	1024
     39#define ODEBUG_FREE_WORK_DELAY	DIV_ROUND_UP(HZ, 10)
     40
     41struct debug_bucket {
     42	struct hlist_head	list;
     43	raw_spinlock_t		lock;
     44};
     45
     46/*
     47 * Debug object percpu free list
     48 * Access is protected by disabling irq
     49 */
     50struct debug_percpu_free {
     51	struct hlist_head	free_objs;
     52	int			obj_free;
     53};
     54
     55static DEFINE_PER_CPU(struct debug_percpu_free, percpu_obj_pool);
     56
     57static struct debug_bucket	obj_hash[ODEBUG_HASH_SIZE];
     58
     59static struct debug_obj		obj_static_pool[ODEBUG_POOL_SIZE] __initdata;
     60
     61static DEFINE_RAW_SPINLOCK(pool_lock);
     62
     63static HLIST_HEAD(obj_pool);
     64static HLIST_HEAD(obj_to_free);
     65
     66/*
     67 * Because of the presence of percpu free pools, obj_pool_free will
     68 * under-count those in the percpu free pools. Similarly, obj_pool_used
     69 * will over-count those in the percpu free pools. Adjustments will be
     70 * made at debug_stats_show(). Both obj_pool_min_free and obj_pool_max_used
     71 * can be off.
     72 */
     73static int			obj_pool_min_free = ODEBUG_POOL_SIZE;
     74static int			obj_pool_free = ODEBUG_POOL_SIZE;
     75static int			obj_pool_used;
     76static int			obj_pool_max_used;
     77static bool			obj_freeing;
     78/* The number of objs on the global free list */
     79static int			obj_nr_tofree;
     80
     81static int			debug_objects_maxchain __read_mostly;
     82static int __maybe_unused	debug_objects_maxchecked __read_mostly;
     83static int			debug_objects_fixups __read_mostly;
     84static int			debug_objects_warnings __read_mostly;
     85static int			debug_objects_enabled __read_mostly
     86				= CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT;
     87static int			debug_objects_pool_size __read_mostly
     88				= ODEBUG_POOL_SIZE;
     89static int			debug_objects_pool_min_level __read_mostly
     90				= ODEBUG_POOL_MIN_LEVEL;
     91static const struct debug_obj_descr *descr_test  __read_mostly;
     92static struct kmem_cache	*obj_cache __read_mostly;
     93
     94/*
     95 * Track numbers of kmem_cache_alloc()/free() calls done.
     96 */
     97static int			debug_objects_allocated;
     98static int			debug_objects_freed;
     99
    100static void free_obj_work(struct work_struct *work);
    101static DECLARE_DELAYED_WORK(debug_obj_work, free_obj_work);
    102
    103static int __init enable_object_debug(char *str)
    104{
    105	debug_objects_enabled = 1;
    106	return 0;
    107}
    108
    109static int __init disable_object_debug(char *str)
    110{
    111	debug_objects_enabled = 0;
    112	return 0;
    113}
    114
    115early_param("debug_objects", enable_object_debug);
    116early_param("no_debug_objects", disable_object_debug);
    117
    118static const char *obj_states[ODEBUG_STATE_MAX] = {
    119	[ODEBUG_STATE_NONE]		= "none",
    120	[ODEBUG_STATE_INIT]		= "initialized",
    121	[ODEBUG_STATE_INACTIVE]		= "inactive",
    122	[ODEBUG_STATE_ACTIVE]		= "active",
    123	[ODEBUG_STATE_DESTROYED]	= "destroyed",
    124	[ODEBUG_STATE_NOTAVAILABLE]	= "not available",
    125};
    126
    127static void fill_pool(void)
    128{
    129	gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN;
    130	struct debug_obj *obj;
    131	unsigned long flags;
    132
    133	if (likely(READ_ONCE(obj_pool_free) >= debug_objects_pool_min_level))
    134		return;
    135
    136	/*
    137	 * Reuse objs from the global free list; they will be reinitialized
    138	 * when allocating.
    139	 *
    140	 * Both obj_nr_tofree and obj_pool_free are checked locklessly; the
    141	 * READ_ONCE()s pair with the WRITE_ONCE()s in pool_lock critical
    142	 * sections.
    143	 */
    144	while (READ_ONCE(obj_nr_tofree) && (READ_ONCE(obj_pool_free) < obj_pool_min_free)) {
    145		raw_spin_lock_irqsave(&pool_lock, flags);
    146		/*
    147		 * Recheck with the lock held as the worker thread might have
    148		 * won the race and freed the global free list already.
    149		 */
    150		while (obj_nr_tofree && (obj_pool_free < obj_pool_min_free)) {
    151			obj = hlist_entry(obj_to_free.first, typeof(*obj), node);
    152			hlist_del(&obj->node);
    153			WRITE_ONCE(obj_nr_tofree, obj_nr_tofree - 1);
    154			hlist_add_head(&obj->node, &obj_pool);
    155			WRITE_ONCE(obj_pool_free, obj_pool_free + 1);
    156		}
    157		raw_spin_unlock_irqrestore(&pool_lock, flags);
    158	}
    159
    160	if (unlikely(!obj_cache))
    161		return;
    162
    163	while (READ_ONCE(obj_pool_free) < debug_objects_pool_min_level) {
    164		struct debug_obj *new[ODEBUG_BATCH_SIZE];
    165		int cnt;
    166
    167		for (cnt = 0; cnt < ODEBUG_BATCH_SIZE; cnt++) {
    168			new[cnt] = kmem_cache_zalloc(obj_cache, gfp);
    169			if (!new[cnt])
    170				break;
    171		}
    172		if (!cnt)
    173			return;
    174
    175		raw_spin_lock_irqsave(&pool_lock, flags);
    176		while (cnt) {
    177			hlist_add_head(&new[--cnt]->node, &obj_pool);
    178			debug_objects_allocated++;
    179			WRITE_ONCE(obj_pool_free, obj_pool_free + 1);
    180		}
    181		raw_spin_unlock_irqrestore(&pool_lock, flags);
    182	}
    183}
    184
    185/*
    186 * Lookup an object in the hash bucket.
    187 */
    188static struct debug_obj *lookup_object(void *addr, struct debug_bucket *b)
    189{
    190	struct debug_obj *obj;
    191	int cnt = 0;
    192
    193	hlist_for_each_entry(obj, &b->list, node) {
    194		cnt++;
    195		if (obj->object == addr)
    196			return obj;
    197	}
    198	if (cnt > debug_objects_maxchain)
    199		debug_objects_maxchain = cnt;
    200
    201	return NULL;
    202}
    203
    204/*
    205 * Allocate a new object from the hlist
    206 */
    207static struct debug_obj *__alloc_object(struct hlist_head *list)
    208{
    209	struct debug_obj *obj = NULL;
    210
    211	if (list->first) {
    212		obj = hlist_entry(list->first, typeof(*obj), node);
    213		hlist_del(&obj->node);
    214	}
    215
    216	return obj;
    217}
    218
    219/*
    220 * Allocate a new object. If the pool is empty, switch off the debugger.
    221 * Must be called with interrupts disabled.
    222 */
    223static struct debug_obj *
    224alloc_object(void *addr, struct debug_bucket *b, const struct debug_obj_descr *descr)
    225{
    226	struct debug_percpu_free *percpu_pool = this_cpu_ptr(&percpu_obj_pool);
    227	struct debug_obj *obj;
    228
    229	if (likely(obj_cache)) {
    230		obj = __alloc_object(&percpu_pool->free_objs);
    231		if (obj) {
    232			percpu_pool->obj_free--;
    233			goto init_obj;
    234		}
    235	}
    236
    237	raw_spin_lock(&pool_lock);
    238	obj = __alloc_object(&obj_pool);
    239	if (obj) {
    240		obj_pool_used++;
    241		WRITE_ONCE(obj_pool_free, obj_pool_free - 1);
    242
    243		/*
    244		 * Looking ahead, allocate one batch of debug objects and
    245		 * put them into the percpu free pool.
    246		 */
    247		if (likely(obj_cache)) {
    248			int i;
    249
    250			for (i = 0; i < ODEBUG_BATCH_SIZE; i++) {
    251				struct debug_obj *obj2;
    252
    253				obj2 = __alloc_object(&obj_pool);
    254				if (!obj2)
    255					break;
    256				hlist_add_head(&obj2->node,
    257					       &percpu_pool->free_objs);
    258				percpu_pool->obj_free++;
    259				obj_pool_used++;
    260				WRITE_ONCE(obj_pool_free, obj_pool_free - 1);
    261			}
    262		}
    263
    264		if (obj_pool_used > obj_pool_max_used)
    265			obj_pool_max_used = obj_pool_used;
    266
    267		if (obj_pool_free < obj_pool_min_free)
    268			obj_pool_min_free = obj_pool_free;
    269	}
    270	raw_spin_unlock(&pool_lock);
    271
    272init_obj:
    273	if (obj) {
    274		obj->object = addr;
    275		obj->descr  = descr;
    276		obj->state  = ODEBUG_STATE_NONE;
    277		obj->astate = 0;
    278		hlist_add_head(&obj->node, &b->list);
    279	}
    280	return obj;
    281}
    282
    283/*
    284 * workqueue function to free objects.
    285 *
    286 * To reduce contention on the global pool_lock, the actual freeing of
    287 * debug objects will be delayed if the pool_lock is busy.
    288 */
    289static void free_obj_work(struct work_struct *work)
    290{
    291	struct hlist_node *tmp;
    292	struct debug_obj *obj;
    293	unsigned long flags;
    294	HLIST_HEAD(tofree);
    295
    296	WRITE_ONCE(obj_freeing, false);
    297	if (!raw_spin_trylock_irqsave(&pool_lock, flags))
    298		return;
    299
    300	if (obj_pool_free >= debug_objects_pool_size)
    301		goto free_objs;
    302
    303	/*
    304	 * The objs on the pool list might be allocated before the work is
    305	 * run, so recheck if pool list it full or not, if not fill pool
    306	 * list from the global free list. As it is likely that a workload
    307	 * may be gearing up to use more and more objects, don't free any
    308	 * of them until the next round.
    309	 */
    310	while (obj_nr_tofree && obj_pool_free < debug_objects_pool_size) {
    311		obj = hlist_entry(obj_to_free.first, typeof(*obj), node);
    312		hlist_del(&obj->node);
    313		hlist_add_head(&obj->node, &obj_pool);
    314		WRITE_ONCE(obj_pool_free, obj_pool_free + 1);
    315		WRITE_ONCE(obj_nr_tofree, obj_nr_tofree - 1);
    316	}
    317	raw_spin_unlock_irqrestore(&pool_lock, flags);
    318	return;
    319
    320free_objs:
    321	/*
    322	 * Pool list is already full and there are still objs on the free
    323	 * list. Move remaining free objs to a temporary list to free the
    324	 * memory outside the pool_lock held region.
    325	 */
    326	if (obj_nr_tofree) {
    327		hlist_move_list(&obj_to_free, &tofree);
    328		debug_objects_freed += obj_nr_tofree;
    329		WRITE_ONCE(obj_nr_tofree, 0);
    330	}
    331	raw_spin_unlock_irqrestore(&pool_lock, flags);
    332
    333	hlist_for_each_entry_safe(obj, tmp, &tofree, node) {
    334		hlist_del(&obj->node);
    335		kmem_cache_free(obj_cache, obj);
    336	}
    337}
    338
    339static void __free_object(struct debug_obj *obj)
    340{
    341	struct debug_obj *objs[ODEBUG_BATCH_SIZE];
    342	struct debug_percpu_free *percpu_pool;
    343	int lookahead_count = 0;
    344	unsigned long flags;
    345	bool work;
    346
    347	local_irq_save(flags);
    348	if (!obj_cache)
    349		goto free_to_obj_pool;
    350
    351	/*
    352	 * Try to free it into the percpu pool first.
    353	 */
    354	percpu_pool = this_cpu_ptr(&percpu_obj_pool);
    355	if (percpu_pool->obj_free < ODEBUG_POOL_PERCPU_SIZE) {
    356		hlist_add_head(&obj->node, &percpu_pool->free_objs);
    357		percpu_pool->obj_free++;
    358		local_irq_restore(flags);
    359		return;
    360	}
    361
    362	/*
    363	 * As the percpu pool is full, look ahead and pull out a batch
    364	 * of objects from the percpu pool and free them as well.
    365	 */
    366	for (; lookahead_count < ODEBUG_BATCH_SIZE; lookahead_count++) {
    367		objs[lookahead_count] = __alloc_object(&percpu_pool->free_objs);
    368		if (!objs[lookahead_count])
    369			break;
    370		percpu_pool->obj_free--;
    371	}
    372
    373free_to_obj_pool:
    374	raw_spin_lock(&pool_lock);
    375	work = (obj_pool_free > debug_objects_pool_size) && obj_cache &&
    376	       (obj_nr_tofree < ODEBUG_FREE_WORK_MAX);
    377	obj_pool_used--;
    378
    379	if (work) {
    380		WRITE_ONCE(obj_nr_tofree, obj_nr_tofree + 1);
    381		hlist_add_head(&obj->node, &obj_to_free);
    382		if (lookahead_count) {
    383			WRITE_ONCE(obj_nr_tofree, obj_nr_tofree + lookahead_count);
    384			obj_pool_used -= lookahead_count;
    385			while (lookahead_count) {
    386				hlist_add_head(&objs[--lookahead_count]->node,
    387					       &obj_to_free);
    388			}
    389		}
    390
    391		if ((obj_pool_free > debug_objects_pool_size) &&
    392		    (obj_nr_tofree < ODEBUG_FREE_WORK_MAX)) {
    393			int i;
    394
    395			/*
    396			 * Free one more batch of objects from obj_pool.
    397			 */
    398			for (i = 0; i < ODEBUG_BATCH_SIZE; i++) {
    399				obj = __alloc_object(&obj_pool);
    400				hlist_add_head(&obj->node, &obj_to_free);
    401				WRITE_ONCE(obj_pool_free, obj_pool_free - 1);
    402				WRITE_ONCE(obj_nr_tofree, obj_nr_tofree + 1);
    403			}
    404		}
    405	} else {
    406		WRITE_ONCE(obj_pool_free, obj_pool_free + 1);
    407		hlist_add_head(&obj->node, &obj_pool);
    408		if (lookahead_count) {
    409			WRITE_ONCE(obj_pool_free, obj_pool_free + lookahead_count);
    410			obj_pool_used -= lookahead_count;
    411			while (lookahead_count) {
    412				hlist_add_head(&objs[--lookahead_count]->node,
    413					       &obj_pool);
    414			}
    415		}
    416	}
    417	raw_spin_unlock(&pool_lock);
    418	local_irq_restore(flags);
    419}
    420
    421/*
    422 * Put the object back into the pool and schedule work to free objects
    423 * if necessary.
    424 */
    425static void free_object(struct debug_obj *obj)
    426{
    427	__free_object(obj);
    428	if (!READ_ONCE(obj_freeing) && READ_ONCE(obj_nr_tofree)) {
    429		WRITE_ONCE(obj_freeing, true);
    430		schedule_delayed_work(&debug_obj_work, ODEBUG_FREE_WORK_DELAY);
    431	}
    432}
    433
    434#ifdef CONFIG_HOTPLUG_CPU
    435static int object_cpu_offline(unsigned int cpu)
    436{
    437	struct debug_percpu_free *percpu_pool;
    438	struct hlist_node *tmp;
    439	struct debug_obj *obj;
    440
    441	/* Remote access is safe as the CPU is dead already */
    442	percpu_pool = per_cpu_ptr(&percpu_obj_pool, cpu);
    443	hlist_for_each_entry_safe(obj, tmp, &percpu_pool->free_objs, node) {
    444		hlist_del(&obj->node);
    445		kmem_cache_free(obj_cache, obj);
    446	}
    447	percpu_pool->obj_free = 0;
    448
    449	return 0;
    450}
    451#endif
    452
    453/*
    454 * We run out of memory. That means we probably have tons of objects
    455 * allocated.
    456 */
    457static void debug_objects_oom(void)
    458{
    459	struct debug_bucket *db = obj_hash;
    460	struct hlist_node *tmp;
    461	HLIST_HEAD(freelist);
    462	struct debug_obj *obj;
    463	unsigned long flags;
    464	int i;
    465
    466	pr_warn("Out of memory. ODEBUG disabled\n");
    467
    468	for (i = 0; i < ODEBUG_HASH_SIZE; i++, db++) {
    469		raw_spin_lock_irqsave(&db->lock, flags);
    470		hlist_move_list(&db->list, &freelist);
    471		raw_spin_unlock_irqrestore(&db->lock, flags);
    472
    473		/* Now free them */
    474		hlist_for_each_entry_safe(obj, tmp, &freelist, node) {
    475			hlist_del(&obj->node);
    476			free_object(obj);
    477		}
    478	}
    479}
    480
    481/*
    482 * We use the pfn of the address for the hash. That way we can check
    483 * for freed objects simply by checking the affected bucket.
    484 */
    485static struct debug_bucket *get_bucket(unsigned long addr)
    486{
    487	unsigned long hash;
    488
    489	hash = hash_long((addr >> ODEBUG_CHUNK_SHIFT), ODEBUG_HASH_BITS);
    490	return &obj_hash[hash];
    491}
    492
    493static void debug_print_object(struct debug_obj *obj, char *msg)
    494{
    495	const struct debug_obj_descr *descr = obj->descr;
    496	static int limit;
    497
    498	if (limit < 5 && descr != descr_test) {
    499		void *hint = descr->debug_hint ?
    500			descr->debug_hint(obj->object) : NULL;
    501		limit++;
    502		WARN(1, KERN_ERR "ODEBUG: %s %s (active state %u) "
    503				 "object type: %s hint: %pS\n",
    504			msg, obj_states[obj->state], obj->astate,
    505			descr->name, hint);
    506	}
    507	debug_objects_warnings++;
    508}
    509
    510/*
    511 * Try to repair the damage, so we have a better chance to get useful
    512 * debug output.
    513 */
    514static bool
    515debug_object_fixup(bool (*fixup)(void *addr, enum debug_obj_state state),
    516		   void * addr, enum debug_obj_state state)
    517{
    518	if (fixup && fixup(addr, state)) {
    519		debug_objects_fixups++;
    520		return true;
    521	}
    522	return false;
    523}
    524
    525static void debug_object_is_on_stack(void *addr, int onstack)
    526{
    527	int is_on_stack;
    528	static int limit;
    529
    530	if (limit > 4)
    531		return;
    532
    533	is_on_stack = object_is_on_stack(addr);
    534	if (is_on_stack == onstack)
    535		return;
    536
    537	limit++;
    538	if (is_on_stack)
    539		pr_warn("object %p is on stack %p, but NOT annotated.\n", addr,
    540			 task_stack_page(current));
    541	else
    542		pr_warn("object %p is NOT on stack %p, but annotated.\n", addr,
    543			 task_stack_page(current));
    544
    545	WARN_ON(1);
    546}
    547
    548static void
    549__debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack)
    550{
    551	enum debug_obj_state state;
    552	bool check_stack = false;
    553	struct debug_bucket *db;
    554	struct debug_obj *obj;
    555	unsigned long flags;
    556
    557	/*
    558	 * On RT enabled kernels the pool refill must happen in preemptible
    559	 * context:
    560	 */
    561	if (!IS_ENABLED(CONFIG_PREEMPT_RT) || preemptible())
    562		fill_pool();
    563
    564	db = get_bucket((unsigned long) addr);
    565
    566	raw_spin_lock_irqsave(&db->lock, flags);
    567
    568	obj = lookup_object(addr, db);
    569	if (!obj) {
    570		obj = alloc_object(addr, db, descr);
    571		if (!obj) {
    572			debug_objects_enabled = 0;
    573			raw_spin_unlock_irqrestore(&db->lock, flags);
    574			debug_objects_oom();
    575			return;
    576		}
    577		check_stack = true;
    578	}
    579
    580	switch (obj->state) {
    581	case ODEBUG_STATE_NONE:
    582	case ODEBUG_STATE_INIT:
    583	case ODEBUG_STATE_INACTIVE:
    584		obj->state = ODEBUG_STATE_INIT;
    585		break;
    586
    587	case ODEBUG_STATE_ACTIVE:
    588		state = obj->state;
    589		raw_spin_unlock_irqrestore(&db->lock, flags);
    590		debug_print_object(obj, "init");
    591		debug_object_fixup(descr->fixup_init, addr, state);
    592		return;
    593
    594	case ODEBUG_STATE_DESTROYED:
    595		raw_spin_unlock_irqrestore(&db->lock, flags);
    596		debug_print_object(obj, "init");
    597		return;
    598	default:
    599		break;
    600	}
    601
    602	raw_spin_unlock_irqrestore(&db->lock, flags);
    603	if (check_stack)
    604		debug_object_is_on_stack(addr, onstack);
    605}
    606
    607/**
    608 * debug_object_init - debug checks when an object is initialized
    609 * @addr:	address of the object
    610 * @descr:	pointer to an object specific debug description structure
    611 */
    612void debug_object_init(void *addr, const struct debug_obj_descr *descr)
    613{
    614	if (!debug_objects_enabled)
    615		return;
    616
    617	__debug_object_init(addr, descr, 0);
    618}
    619EXPORT_SYMBOL_GPL(debug_object_init);
    620
    621/**
    622 * debug_object_init_on_stack - debug checks when an object on stack is
    623 *				initialized
    624 * @addr:	address of the object
    625 * @descr:	pointer to an object specific debug description structure
    626 */
    627void debug_object_init_on_stack(void *addr, const struct debug_obj_descr *descr)
    628{
    629	if (!debug_objects_enabled)
    630		return;
    631
    632	__debug_object_init(addr, descr, 1);
    633}
    634EXPORT_SYMBOL_GPL(debug_object_init_on_stack);
    635
    636/**
    637 * debug_object_activate - debug checks when an object is activated
    638 * @addr:	address of the object
    639 * @descr:	pointer to an object specific debug description structure
    640 * Returns 0 for success, -EINVAL for check failed.
    641 */
    642int debug_object_activate(void *addr, const struct debug_obj_descr *descr)
    643{
    644	enum debug_obj_state state;
    645	struct debug_bucket *db;
    646	struct debug_obj *obj;
    647	unsigned long flags;
    648	int ret;
    649	struct debug_obj o = { .object = addr,
    650			       .state = ODEBUG_STATE_NOTAVAILABLE,
    651			       .descr = descr };
    652
    653	if (!debug_objects_enabled)
    654		return 0;
    655
    656	db = get_bucket((unsigned long) addr);
    657
    658	raw_spin_lock_irqsave(&db->lock, flags);
    659
    660	obj = lookup_object(addr, db);
    661	if (obj) {
    662		bool print_object = false;
    663
    664		switch (obj->state) {
    665		case ODEBUG_STATE_INIT:
    666		case ODEBUG_STATE_INACTIVE:
    667			obj->state = ODEBUG_STATE_ACTIVE;
    668			ret = 0;
    669			break;
    670
    671		case ODEBUG_STATE_ACTIVE:
    672			state = obj->state;
    673			raw_spin_unlock_irqrestore(&db->lock, flags);
    674			debug_print_object(obj, "activate");
    675			ret = debug_object_fixup(descr->fixup_activate, addr, state);
    676			return ret ? 0 : -EINVAL;
    677
    678		case ODEBUG_STATE_DESTROYED:
    679			print_object = true;
    680			ret = -EINVAL;
    681			break;
    682		default:
    683			ret = 0;
    684			break;
    685		}
    686		raw_spin_unlock_irqrestore(&db->lock, flags);
    687		if (print_object)
    688			debug_print_object(obj, "activate");
    689		return ret;
    690	}
    691
    692	raw_spin_unlock_irqrestore(&db->lock, flags);
    693
    694	/*
    695	 * We are here when a static object is activated. We
    696	 * let the type specific code confirm whether this is
    697	 * true or not. if true, we just make sure that the
    698	 * static object is tracked in the object tracker. If
    699	 * not, this must be a bug, so we try to fix it up.
    700	 */
    701	if (descr->is_static_object && descr->is_static_object(addr)) {
    702		/* track this static object */
    703		debug_object_init(addr, descr);
    704		debug_object_activate(addr, descr);
    705	} else {
    706		debug_print_object(&o, "activate");
    707		ret = debug_object_fixup(descr->fixup_activate, addr,
    708					ODEBUG_STATE_NOTAVAILABLE);
    709		return ret ? 0 : -EINVAL;
    710	}
    711	return 0;
    712}
    713EXPORT_SYMBOL_GPL(debug_object_activate);
    714
    715/**
    716 * debug_object_deactivate - debug checks when an object is deactivated
    717 * @addr:	address of the object
    718 * @descr:	pointer to an object specific debug description structure
    719 */
    720void debug_object_deactivate(void *addr, const struct debug_obj_descr *descr)
    721{
    722	struct debug_bucket *db;
    723	struct debug_obj *obj;
    724	unsigned long flags;
    725	bool print_object = false;
    726
    727	if (!debug_objects_enabled)
    728		return;
    729
    730	db = get_bucket((unsigned long) addr);
    731
    732	raw_spin_lock_irqsave(&db->lock, flags);
    733
    734	obj = lookup_object(addr, db);
    735	if (obj) {
    736		switch (obj->state) {
    737		case ODEBUG_STATE_INIT:
    738		case ODEBUG_STATE_INACTIVE:
    739		case ODEBUG_STATE_ACTIVE:
    740			if (!obj->astate)
    741				obj->state = ODEBUG_STATE_INACTIVE;
    742			else
    743				print_object = true;
    744			break;
    745
    746		case ODEBUG_STATE_DESTROYED:
    747			print_object = true;
    748			break;
    749		default:
    750			break;
    751		}
    752	}
    753
    754	raw_spin_unlock_irqrestore(&db->lock, flags);
    755	if (!obj) {
    756		struct debug_obj o = { .object = addr,
    757				       .state = ODEBUG_STATE_NOTAVAILABLE,
    758				       .descr = descr };
    759
    760		debug_print_object(&o, "deactivate");
    761	} else if (print_object) {
    762		debug_print_object(obj, "deactivate");
    763	}
    764}
    765EXPORT_SYMBOL_GPL(debug_object_deactivate);
    766
    767/**
    768 * debug_object_destroy - debug checks when an object is destroyed
    769 * @addr:	address of the object
    770 * @descr:	pointer to an object specific debug description structure
    771 */
    772void debug_object_destroy(void *addr, const struct debug_obj_descr *descr)
    773{
    774	enum debug_obj_state state;
    775	struct debug_bucket *db;
    776	struct debug_obj *obj;
    777	unsigned long flags;
    778	bool print_object = false;
    779
    780	if (!debug_objects_enabled)
    781		return;
    782
    783	db = get_bucket((unsigned long) addr);
    784
    785	raw_spin_lock_irqsave(&db->lock, flags);
    786
    787	obj = lookup_object(addr, db);
    788	if (!obj)
    789		goto out_unlock;
    790
    791	switch (obj->state) {
    792	case ODEBUG_STATE_NONE:
    793	case ODEBUG_STATE_INIT:
    794	case ODEBUG_STATE_INACTIVE:
    795		obj->state = ODEBUG_STATE_DESTROYED;
    796		break;
    797	case ODEBUG_STATE_ACTIVE:
    798		state = obj->state;
    799		raw_spin_unlock_irqrestore(&db->lock, flags);
    800		debug_print_object(obj, "destroy");
    801		debug_object_fixup(descr->fixup_destroy, addr, state);
    802		return;
    803
    804	case ODEBUG_STATE_DESTROYED:
    805		print_object = true;
    806		break;
    807	default:
    808		break;
    809	}
    810out_unlock:
    811	raw_spin_unlock_irqrestore(&db->lock, flags);
    812	if (print_object)
    813		debug_print_object(obj, "destroy");
    814}
    815EXPORT_SYMBOL_GPL(debug_object_destroy);
    816
    817/**
    818 * debug_object_free - debug checks when an object is freed
    819 * @addr:	address of the object
    820 * @descr:	pointer to an object specific debug description structure
    821 */
    822void debug_object_free(void *addr, const struct debug_obj_descr *descr)
    823{
    824	enum debug_obj_state state;
    825	struct debug_bucket *db;
    826	struct debug_obj *obj;
    827	unsigned long flags;
    828
    829	if (!debug_objects_enabled)
    830		return;
    831
    832	db = get_bucket((unsigned long) addr);
    833
    834	raw_spin_lock_irqsave(&db->lock, flags);
    835
    836	obj = lookup_object(addr, db);
    837	if (!obj)
    838		goto out_unlock;
    839
    840	switch (obj->state) {
    841	case ODEBUG_STATE_ACTIVE:
    842		state = obj->state;
    843		raw_spin_unlock_irqrestore(&db->lock, flags);
    844		debug_print_object(obj, "free");
    845		debug_object_fixup(descr->fixup_free, addr, state);
    846		return;
    847	default:
    848		hlist_del(&obj->node);
    849		raw_spin_unlock_irqrestore(&db->lock, flags);
    850		free_object(obj);
    851		return;
    852	}
    853out_unlock:
    854	raw_spin_unlock_irqrestore(&db->lock, flags);
    855}
    856EXPORT_SYMBOL_GPL(debug_object_free);
    857
    858/**
    859 * debug_object_assert_init - debug checks when object should be init-ed
    860 * @addr:	address of the object
    861 * @descr:	pointer to an object specific debug description structure
    862 */
    863void debug_object_assert_init(void *addr, const struct debug_obj_descr *descr)
    864{
    865	struct debug_bucket *db;
    866	struct debug_obj *obj;
    867	unsigned long flags;
    868
    869	if (!debug_objects_enabled)
    870		return;
    871
    872	db = get_bucket((unsigned long) addr);
    873
    874	raw_spin_lock_irqsave(&db->lock, flags);
    875
    876	obj = lookup_object(addr, db);
    877	if (!obj) {
    878		struct debug_obj o = { .object = addr,
    879				       .state = ODEBUG_STATE_NOTAVAILABLE,
    880				       .descr = descr };
    881
    882		raw_spin_unlock_irqrestore(&db->lock, flags);
    883		/*
    884		 * Maybe the object is static, and we let the type specific
    885		 * code confirm. Track this static object if true, else invoke
    886		 * fixup.
    887		 */
    888		if (descr->is_static_object && descr->is_static_object(addr)) {
    889			/* Track this static object */
    890			debug_object_init(addr, descr);
    891		} else {
    892			debug_print_object(&o, "assert_init");
    893			debug_object_fixup(descr->fixup_assert_init, addr,
    894					   ODEBUG_STATE_NOTAVAILABLE);
    895		}
    896		return;
    897	}
    898
    899	raw_spin_unlock_irqrestore(&db->lock, flags);
    900}
    901EXPORT_SYMBOL_GPL(debug_object_assert_init);
    902
    903/**
    904 * debug_object_active_state - debug checks object usage state machine
    905 * @addr:	address of the object
    906 * @descr:	pointer to an object specific debug description structure
    907 * @expect:	expected state
    908 * @next:	state to move to if expected state is found
    909 */
    910void
    911debug_object_active_state(void *addr, const struct debug_obj_descr *descr,
    912			  unsigned int expect, unsigned int next)
    913{
    914	struct debug_bucket *db;
    915	struct debug_obj *obj;
    916	unsigned long flags;
    917	bool print_object = false;
    918
    919	if (!debug_objects_enabled)
    920		return;
    921
    922	db = get_bucket((unsigned long) addr);
    923
    924	raw_spin_lock_irqsave(&db->lock, flags);
    925
    926	obj = lookup_object(addr, db);
    927	if (obj) {
    928		switch (obj->state) {
    929		case ODEBUG_STATE_ACTIVE:
    930			if (obj->astate == expect)
    931				obj->astate = next;
    932			else
    933				print_object = true;
    934			break;
    935
    936		default:
    937			print_object = true;
    938			break;
    939		}
    940	}
    941
    942	raw_spin_unlock_irqrestore(&db->lock, flags);
    943	if (!obj) {
    944		struct debug_obj o = { .object = addr,
    945				       .state = ODEBUG_STATE_NOTAVAILABLE,
    946				       .descr = descr };
    947
    948		debug_print_object(&o, "active_state");
    949	} else if (print_object) {
    950		debug_print_object(obj, "active_state");
    951	}
    952}
    953EXPORT_SYMBOL_GPL(debug_object_active_state);
    954
    955#ifdef CONFIG_DEBUG_OBJECTS_FREE
    956static void __debug_check_no_obj_freed(const void *address, unsigned long size)
    957{
    958	unsigned long flags, oaddr, saddr, eaddr, paddr, chunks;
    959	const struct debug_obj_descr *descr;
    960	enum debug_obj_state state;
    961	struct debug_bucket *db;
    962	struct hlist_node *tmp;
    963	struct debug_obj *obj;
    964	int cnt, objs_checked = 0;
    965
    966	saddr = (unsigned long) address;
    967	eaddr = saddr + size;
    968	paddr = saddr & ODEBUG_CHUNK_MASK;
    969	chunks = ((eaddr - paddr) + (ODEBUG_CHUNK_SIZE - 1));
    970	chunks >>= ODEBUG_CHUNK_SHIFT;
    971
    972	for (;chunks > 0; chunks--, paddr += ODEBUG_CHUNK_SIZE) {
    973		db = get_bucket(paddr);
    974
    975repeat:
    976		cnt = 0;
    977		raw_spin_lock_irqsave(&db->lock, flags);
    978		hlist_for_each_entry_safe(obj, tmp, &db->list, node) {
    979			cnt++;
    980			oaddr = (unsigned long) obj->object;
    981			if (oaddr < saddr || oaddr >= eaddr)
    982				continue;
    983
    984			switch (obj->state) {
    985			case ODEBUG_STATE_ACTIVE:
    986				descr = obj->descr;
    987				state = obj->state;
    988				raw_spin_unlock_irqrestore(&db->lock, flags);
    989				debug_print_object(obj, "free");
    990				debug_object_fixup(descr->fixup_free,
    991						   (void *) oaddr, state);
    992				goto repeat;
    993			default:
    994				hlist_del(&obj->node);
    995				__free_object(obj);
    996				break;
    997			}
    998		}
    999		raw_spin_unlock_irqrestore(&db->lock, flags);
   1000
   1001		if (cnt > debug_objects_maxchain)
   1002			debug_objects_maxchain = cnt;
   1003
   1004		objs_checked += cnt;
   1005	}
   1006
   1007	if (objs_checked > debug_objects_maxchecked)
   1008		debug_objects_maxchecked = objs_checked;
   1009
   1010	/* Schedule work to actually kmem_cache_free() objects */
   1011	if (!READ_ONCE(obj_freeing) && READ_ONCE(obj_nr_tofree)) {
   1012		WRITE_ONCE(obj_freeing, true);
   1013		schedule_delayed_work(&debug_obj_work, ODEBUG_FREE_WORK_DELAY);
   1014	}
   1015}
   1016
   1017void debug_check_no_obj_freed(const void *address, unsigned long size)
   1018{
   1019	if (debug_objects_enabled)
   1020		__debug_check_no_obj_freed(address, size);
   1021}
   1022#endif
   1023
   1024#ifdef CONFIG_DEBUG_FS
   1025
   1026static int debug_stats_show(struct seq_file *m, void *v)
   1027{
   1028	int cpu, obj_percpu_free = 0;
   1029
   1030	for_each_possible_cpu(cpu)
   1031		obj_percpu_free += per_cpu(percpu_obj_pool.obj_free, cpu);
   1032
   1033	seq_printf(m, "max_chain     :%d\n", debug_objects_maxchain);
   1034	seq_printf(m, "max_checked   :%d\n", debug_objects_maxchecked);
   1035	seq_printf(m, "warnings      :%d\n", debug_objects_warnings);
   1036	seq_printf(m, "fixups        :%d\n", debug_objects_fixups);
   1037	seq_printf(m, "pool_free     :%d\n", READ_ONCE(obj_pool_free) + obj_percpu_free);
   1038	seq_printf(m, "pool_pcp_free :%d\n", obj_percpu_free);
   1039	seq_printf(m, "pool_min_free :%d\n", obj_pool_min_free);
   1040	seq_printf(m, "pool_used     :%d\n", obj_pool_used - obj_percpu_free);
   1041	seq_printf(m, "pool_max_used :%d\n", obj_pool_max_used);
   1042	seq_printf(m, "on_free_list  :%d\n", READ_ONCE(obj_nr_tofree));
   1043	seq_printf(m, "objs_allocated:%d\n", debug_objects_allocated);
   1044	seq_printf(m, "objs_freed    :%d\n", debug_objects_freed);
   1045	return 0;
   1046}
   1047DEFINE_SHOW_ATTRIBUTE(debug_stats);
   1048
   1049static int __init debug_objects_init_debugfs(void)
   1050{
   1051	struct dentry *dbgdir;
   1052
   1053	if (!debug_objects_enabled)
   1054		return 0;
   1055
   1056	dbgdir = debugfs_create_dir("debug_objects", NULL);
   1057
   1058	debugfs_create_file("stats", 0444, dbgdir, NULL, &debug_stats_fops);
   1059
   1060	return 0;
   1061}
   1062__initcall(debug_objects_init_debugfs);
   1063
   1064#else
   1065static inline void debug_objects_init_debugfs(void) { }
   1066#endif
   1067
   1068#ifdef CONFIG_DEBUG_OBJECTS_SELFTEST
   1069
   1070/* Random data structure for the self test */
   1071struct self_test {
   1072	unsigned long	dummy1[6];
   1073	int		static_init;
   1074	unsigned long	dummy2[3];
   1075};
   1076
   1077static __initconst const struct debug_obj_descr descr_type_test;
   1078
   1079static bool __init is_static_object(void *addr)
   1080{
   1081	struct self_test *obj = addr;
   1082
   1083	return obj->static_init;
   1084}
   1085
   1086/*
   1087 * fixup_init is called when:
   1088 * - an active object is initialized
   1089 */
   1090static bool __init fixup_init(void *addr, enum debug_obj_state state)
   1091{
   1092	struct self_test *obj = addr;
   1093
   1094	switch (state) {
   1095	case ODEBUG_STATE_ACTIVE:
   1096		debug_object_deactivate(obj, &descr_type_test);
   1097		debug_object_init(obj, &descr_type_test);
   1098		return true;
   1099	default:
   1100		return false;
   1101	}
   1102}
   1103
   1104/*
   1105 * fixup_activate is called when:
   1106 * - an active object is activated
   1107 * - an unknown non-static object is activated
   1108 */
   1109static bool __init fixup_activate(void *addr, enum debug_obj_state state)
   1110{
   1111	struct self_test *obj = addr;
   1112
   1113	switch (state) {
   1114	case ODEBUG_STATE_NOTAVAILABLE:
   1115		return true;
   1116	case ODEBUG_STATE_ACTIVE:
   1117		debug_object_deactivate(obj, &descr_type_test);
   1118		debug_object_activate(obj, &descr_type_test);
   1119		return true;
   1120
   1121	default:
   1122		return false;
   1123	}
   1124}
   1125
   1126/*
   1127 * fixup_destroy is called when:
   1128 * - an active object is destroyed
   1129 */
   1130static bool __init fixup_destroy(void *addr, enum debug_obj_state state)
   1131{
   1132	struct self_test *obj = addr;
   1133
   1134	switch (state) {
   1135	case ODEBUG_STATE_ACTIVE:
   1136		debug_object_deactivate(obj, &descr_type_test);
   1137		debug_object_destroy(obj, &descr_type_test);
   1138		return true;
   1139	default:
   1140		return false;
   1141	}
   1142}
   1143
   1144/*
   1145 * fixup_free is called when:
   1146 * - an active object is freed
   1147 */
   1148static bool __init fixup_free(void *addr, enum debug_obj_state state)
   1149{
   1150	struct self_test *obj = addr;
   1151
   1152	switch (state) {
   1153	case ODEBUG_STATE_ACTIVE:
   1154		debug_object_deactivate(obj, &descr_type_test);
   1155		debug_object_free(obj, &descr_type_test);
   1156		return true;
   1157	default:
   1158		return false;
   1159	}
   1160}
   1161
   1162static int __init
   1163check_results(void *addr, enum debug_obj_state state, int fixups, int warnings)
   1164{
   1165	struct debug_bucket *db;
   1166	struct debug_obj *obj;
   1167	unsigned long flags;
   1168	int res = -EINVAL;
   1169
   1170	db = get_bucket((unsigned long) addr);
   1171
   1172	raw_spin_lock_irqsave(&db->lock, flags);
   1173
   1174	obj = lookup_object(addr, db);
   1175	if (!obj && state != ODEBUG_STATE_NONE) {
   1176		WARN(1, KERN_ERR "ODEBUG: selftest object not found\n");
   1177		goto out;
   1178	}
   1179	if (obj && obj->state != state) {
   1180		WARN(1, KERN_ERR "ODEBUG: selftest wrong state: %d != %d\n",
   1181		       obj->state, state);
   1182		goto out;
   1183	}
   1184	if (fixups != debug_objects_fixups) {
   1185		WARN(1, KERN_ERR "ODEBUG: selftest fixups failed %d != %d\n",
   1186		       fixups, debug_objects_fixups);
   1187		goto out;
   1188	}
   1189	if (warnings != debug_objects_warnings) {
   1190		WARN(1, KERN_ERR "ODEBUG: selftest warnings failed %d != %d\n",
   1191		       warnings, debug_objects_warnings);
   1192		goto out;
   1193	}
   1194	res = 0;
   1195out:
   1196	raw_spin_unlock_irqrestore(&db->lock, flags);
   1197	if (res)
   1198		debug_objects_enabled = 0;
   1199	return res;
   1200}
   1201
   1202static __initconst const struct debug_obj_descr descr_type_test = {
   1203	.name			= "selftest",
   1204	.is_static_object	= is_static_object,
   1205	.fixup_init		= fixup_init,
   1206	.fixup_activate		= fixup_activate,
   1207	.fixup_destroy		= fixup_destroy,
   1208	.fixup_free		= fixup_free,
   1209};
   1210
   1211static __initdata struct self_test obj = { .static_init = 0 };
   1212
   1213static void __init debug_objects_selftest(void)
   1214{
   1215	int fixups, oldfixups, warnings, oldwarnings;
   1216	unsigned long flags;
   1217
   1218	local_irq_save(flags);
   1219
   1220	fixups = oldfixups = debug_objects_fixups;
   1221	warnings = oldwarnings = debug_objects_warnings;
   1222	descr_test = &descr_type_test;
   1223
   1224	debug_object_init(&obj, &descr_type_test);
   1225	if (check_results(&obj, ODEBUG_STATE_INIT, fixups, warnings))
   1226		goto out;
   1227	debug_object_activate(&obj, &descr_type_test);
   1228	if (check_results(&obj, ODEBUG_STATE_ACTIVE, fixups, warnings))
   1229		goto out;
   1230	debug_object_activate(&obj, &descr_type_test);
   1231	if (check_results(&obj, ODEBUG_STATE_ACTIVE, ++fixups, ++warnings))
   1232		goto out;
   1233	debug_object_deactivate(&obj, &descr_type_test);
   1234	if (check_results(&obj, ODEBUG_STATE_INACTIVE, fixups, warnings))
   1235		goto out;
   1236	debug_object_destroy(&obj, &descr_type_test);
   1237	if (check_results(&obj, ODEBUG_STATE_DESTROYED, fixups, warnings))
   1238		goto out;
   1239	debug_object_init(&obj, &descr_type_test);
   1240	if (check_results(&obj, ODEBUG_STATE_DESTROYED, fixups, ++warnings))
   1241		goto out;
   1242	debug_object_activate(&obj, &descr_type_test);
   1243	if (check_results(&obj, ODEBUG_STATE_DESTROYED, fixups, ++warnings))
   1244		goto out;
   1245	debug_object_deactivate(&obj, &descr_type_test);
   1246	if (check_results(&obj, ODEBUG_STATE_DESTROYED, fixups, ++warnings))
   1247		goto out;
   1248	debug_object_free(&obj, &descr_type_test);
   1249	if (check_results(&obj, ODEBUG_STATE_NONE, fixups, warnings))
   1250		goto out;
   1251
   1252	obj.static_init = 1;
   1253	debug_object_activate(&obj, &descr_type_test);
   1254	if (check_results(&obj, ODEBUG_STATE_ACTIVE, fixups, warnings))
   1255		goto out;
   1256	debug_object_init(&obj, &descr_type_test);
   1257	if (check_results(&obj, ODEBUG_STATE_INIT, ++fixups, ++warnings))
   1258		goto out;
   1259	debug_object_free(&obj, &descr_type_test);
   1260	if (check_results(&obj, ODEBUG_STATE_NONE, fixups, warnings))
   1261		goto out;
   1262
   1263#ifdef CONFIG_DEBUG_OBJECTS_FREE
   1264	debug_object_init(&obj, &descr_type_test);
   1265	if (check_results(&obj, ODEBUG_STATE_INIT, fixups, warnings))
   1266		goto out;
   1267	debug_object_activate(&obj, &descr_type_test);
   1268	if (check_results(&obj, ODEBUG_STATE_ACTIVE, fixups, warnings))
   1269		goto out;
   1270	__debug_check_no_obj_freed(&obj, sizeof(obj));
   1271	if (check_results(&obj, ODEBUG_STATE_NONE, ++fixups, ++warnings))
   1272		goto out;
   1273#endif
   1274	pr_info("selftest passed\n");
   1275
   1276out:
   1277	debug_objects_fixups = oldfixups;
   1278	debug_objects_warnings = oldwarnings;
   1279	descr_test = NULL;
   1280
   1281	local_irq_restore(flags);
   1282}
   1283#else
   1284static inline void debug_objects_selftest(void) { }
   1285#endif
   1286
   1287/*
   1288 * Called during early boot to initialize the hash buckets and link
   1289 * the static object pool objects into the poll list. After this call
   1290 * the object tracker is fully operational.
   1291 */
   1292void __init debug_objects_early_init(void)
   1293{
   1294	int i;
   1295
   1296	for (i = 0; i < ODEBUG_HASH_SIZE; i++)
   1297		raw_spin_lock_init(&obj_hash[i].lock);
   1298
   1299	for (i = 0; i < ODEBUG_POOL_SIZE; i++)
   1300		hlist_add_head(&obj_static_pool[i].node, &obj_pool);
   1301}
   1302
   1303/*
   1304 * Convert the statically allocated objects to dynamic ones:
   1305 */
   1306static int __init debug_objects_replace_static_objects(void)
   1307{
   1308	struct debug_bucket *db = obj_hash;
   1309	struct hlist_node *tmp;
   1310	struct debug_obj *obj, *new;
   1311	HLIST_HEAD(objects);
   1312	int i, cnt = 0;
   1313
   1314	for (i = 0; i < ODEBUG_POOL_SIZE; i++) {
   1315		obj = kmem_cache_zalloc(obj_cache, GFP_KERNEL);
   1316		if (!obj)
   1317			goto free;
   1318		hlist_add_head(&obj->node, &objects);
   1319	}
   1320
   1321	/*
   1322	 * debug_objects_mem_init() is now called early that only one CPU is up
   1323	 * and interrupts have been disabled, so it is safe to replace the
   1324	 * active object references.
   1325	 */
   1326
   1327	/* Remove the statically allocated objects from the pool */
   1328	hlist_for_each_entry_safe(obj, tmp, &obj_pool, node)
   1329		hlist_del(&obj->node);
   1330	/* Move the allocated objects to the pool */
   1331	hlist_move_list(&objects, &obj_pool);
   1332
   1333	/* Replace the active object references */
   1334	for (i = 0; i < ODEBUG_HASH_SIZE; i++, db++) {
   1335		hlist_move_list(&db->list, &objects);
   1336
   1337		hlist_for_each_entry(obj, &objects, node) {
   1338			new = hlist_entry(obj_pool.first, typeof(*obj), node);
   1339			hlist_del(&new->node);
   1340			/* copy object data */
   1341			*new = *obj;
   1342			hlist_add_head(&new->node, &db->list);
   1343			cnt++;
   1344		}
   1345	}
   1346
   1347	pr_debug("%d of %d active objects replaced\n",
   1348		 cnt, obj_pool_used);
   1349	return 0;
   1350free:
   1351	hlist_for_each_entry_safe(obj, tmp, &objects, node) {
   1352		hlist_del(&obj->node);
   1353		kmem_cache_free(obj_cache, obj);
   1354	}
   1355	return -ENOMEM;
   1356}
   1357
   1358/*
   1359 * Called after the kmem_caches are functional to setup a dedicated
   1360 * cache pool, which has the SLAB_DEBUG_OBJECTS flag set. This flag
   1361 * prevents that the debug code is called on kmem_cache_free() for the
   1362 * debug tracker objects to avoid recursive calls.
   1363 */
   1364void __init debug_objects_mem_init(void)
   1365{
   1366	int cpu, extras;
   1367
   1368	if (!debug_objects_enabled)
   1369		return;
   1370
   1371	/*
   1372	 * Initialize the percpu object pools
   1373	 *
   1374	 * Initialization is not strictly necessary, but was done for
   1375	 * completeness.
   1376	 */
   1377	for_each_possible_cpu(cpu)
   1378		INIT_HLIST_HEAD(&per_cpu(percpu_obj_pool.free_objs, cpu));
   1379
   1380	obj_cache = kmem_cache_create("debug_objects_cache",
   1381				      sizeof (struct debug_obj), 0,
   1382				      SLAB_DEBUG_OBJECTS | SLAB_NOLEAKTRACE,
   1383				      NULL);
   1384
   1385	if (!obj_cache || debug_objects_replace_static_objects()) {
   1386		debug_objects_enabled = 0;
   1387		kmem_cache_destroy(obj_cache);
   1388		pr_warn("out of memory.\n");
   1389	} else
   1390		debug_objects_selftest();
   1391
   1392#ifdef CONFIG_HOTPLUG_CPU
   1393	cpuhp_setup_state_nocalls(CPUHP_DEBUG_OBJ_DEAD, "object:offline", NULL,
   1394					object_cpu_offline);
   1395#endif
   1396
   1397	/*
   1398	 * Increase the thresholds for allocating and freeing objects
   1399	 * according to the number of possible CPUs available in the system.
   1400	 */
   1401	extras = num_possible_cpus() * ODEBUG_BATCH_SIZE;
   1402	debug_objects_pool_size += extras;
   1403	debug_objects_pool_min_level += extras;
   1404}