Re: [perf/x86] 8de4a00661: WARNING: CPU: 0 PID: 1 at kernel/locking/mutex-debug.c:80 debug_mutex_unlock+0x20c/0x2b3

From: Thomas Gleixner
Date: Tue Jul 12 2016 - 12:44:04 EST


On Wed, 13 Jul 2016, kernel test robot wrote:
> [ 1.863354] WARNING: CPU: 0 PID: 1 at kernel/locking/mutex-debug.c:80 debug_mutex_unlock+0x20c/0x2b3
> [ 1.877193] DEBUG_LOCKS_WARN_ON(lock->owner != current)
>
> [ 1.979431] [<ffffffff8167508c>] mutex_unlock+0x9/0xb
> [ 1.979431] [<ffffffff8167508c>] mutex_unlock+0x9/0xb
> [ 1.990691] [<ffffffff8105a67f>] cpuhp_store_callbacks+0x5a/0x63

I have a hard time to figure out how that can happen:

static void cpuhp_store_callbacks(enum cpuhp_state state,
const char *name,
int (*startup)(unsigned int cpu),
int (*teardown)(unsigned int cpu))
{
/* (Un)Install the callbacks for further cpu hotplug operations */
struct cpuhp_step *sp;

mutex_lock(&cpuhp_state_mutex);
sp = cpuhp_get_step(state);
sp->startup = startup;
sp->teardown = teardown;
sp->name = name;
mutex_unlock(&cpuhp_state_mutex);
}

Confused ....