Merge branch 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull core/debugobjects changes from Ingo Molnar:
 "Not much happened: it includes a cleanup and an irq latency reduction
  fixlet."

* 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  debugobjects: Fill_pool() returns void now
  debugobjects: printk with irqs enabled
  debugobjects: Remove unused return value from fill_pool()
This commit is contained in:
Linus Torvalds 2012-05-21 19:22:55 -07:00
commit 513de477a0

View File

@ -79,30 +79,29 @@ static const char *obj_states[ODEBUG_STATE_MAX] = {
[ODEBUG_STATE_NOTAVAILABLE] = "not available", [ODEBUG_STATE_NOTAVAILABLE] = "not available",
}; };
static int fill_pool(void) static void fill_pool(void)
{ {
gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN; gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN;
struct debug_obj *new; struct debug_obj *new;
unsigned long flags; unsigned long flags;
if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL)) if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL))
return obj_pool_free; return;
if (unlikely(!obj_cache)) if (unlikely(!obj_cache))
return obj_pool_free; return;
while (obj_pool_free < ODEBUG_POOL_MIN_LEVEL) { while (obj_pool_free < ODEBUG_POOL_MIN_LEVEL) {
new = kmem_cache_zalloc(obj_cache, gfp); new = kmem_cache_zalloc(obj_cache, gfp);
if (!new) if (!new)
return obj_pool_free; return;
raw_spin_lock_irqsave(&pool_lock, flags); raw_spin_lock_irqsave(&pool_lock, flags);
hlist_add_head(&new->node, &obj_pool); hlist_add_head(&new->node, &obj_pool);
obj_pool_free++; obj_pool_free++;
raw_spin_unlock_irqrestore(&pool_lock, flags); raw_spin_unlock_irqrestore(&pool_lock, flags);
} }
return obj_pool_free;
} }
/* /*
@ -1052,10 +1051,10 @@ static int __init debug_objects_replace_static_objects(void)
cnt++; cnt++;
} }
} }
local_irq_enable();
printk(KERN_DEBUG "ODEBUG: %d of %d active objects replaced\n", cnt, printk(KERN_DEBUG "ODEBUG: %d of %d active objects replaced\n", cnt,
obj_pool_used); obj_pool_used);
local_irq_enable();
return 0; return 0;
free: free:
hlist_for_each_entry_safe(obj, node, tmp, &objects, node) { hlist_for_each_entry_safe(obj, node, tmp, &objects, node) {