Merge branch 'core/debugobjects' into core/urgent

+6 -9
+6 -9
lib/debugobjects.c
··· 68 { 69 gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN; 70 struct debug_obj *new; 71 72 if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL)) 73 return obj_pool_free; ··· 82 if (!new) 83 return obj_pool_free; 84 85 - spin_lock(&pool_lock); 86 hlist_add_head(&new->node, &obj_pool); 87 obj_pool_free++; 88 - spin_unlock(&pool_lock); 89 } 90 return obj_pool_free; 91 } ··· 111 } 112 113 /* 114 - * Allocate a new object. If the pool is empty and no refill possible, 115 - * switch off the debugger. 116 */ 117 static struct debug_obj * 118 alloc_object(void *addr, struct debug_bucket *b, struct debug_obj_descr *descr) 119 { 120 struct debug_obj *obj = NULL; 121 - int retry = 0; 122 123 - repeat: 124 spin_lock(&pool_lock); 125 if (obj_pool.first) { 126 obj = hlist_entry(obj_pool.first, typeof(*obj), node); ··· 138 obj_pool_min_free = obj_pool_free; 139 } 140 spin_unlock(&pool_lock); 141 - 142 - if (fill_pool() && !obj && !retry++) 143 - goto repeat; 144 145 return obj; 146 } ··· 255 struct debug_bucket *db; 256 struct debug_obj *obj; 257 unsigned long flags; 258 259 db = get_bucket((unsigned long) addr); 260
··· 68 { 69 gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN; 70 struct debug_obj *new; 71 + unsigned long flags; 72 73 if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL)) 74 return obj_pool_free; ··· 81 if (!new) 82 return obj_pool_free; 83 84 + spin_lock_irqsave(&pool_lock, flags); 85 hlist_add_head(&new->node, &obj_pool); 86 obj_pool_free++; 87 + spin_unlock_irqrestore(&pool_lock, flags); 88 } 89 return obj_pool_free; 90 } ··· 110 } 111 112 /* 113 + * Allocate a new object. If the pool is empty, switch off the debugger. 114 */ 115 static struct debug_obj * 116 alloc_object(void *addr, struct debug_bucket *b, struct debug_obj_descr *descr) 117 { 118 struct debug_obj *obj = NULL; 119 120 spin_lock(&pool_lock); 121 if (obj_pool.first) { 122 obj = hlist_entry(obj_pool.first, typeof(*obj), node); ··· 140 obj_pool_min_free = obj_pool_free; 141 } 142 spin_unlock(&pool_lock); 143 144 return obj; 145 } ··· 260 struct debug_bucket *db; 261 struct debug_obj *obj; 262 unsigned long flags; 263 + 264 + fill_pool(); 265 266 db = get_bucket((unsigned long) addr); 267