From: Andrew Morton bug, yes? Cc: Gautham R Shenoy Signed-off-by: Andrew Morton --- kernel/cpu.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN kernel/cpu.c~define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix kernel/cpu.c --- a/kernel/cpu.c~define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix +++ a/kernel/cpu.c @@ -139,7 +139,8 @@ static int _cpu_down(unsigned int cpu) if (err == NOTIFY_BAD) { printk("%s: attempt to take down CPU %u failed\n", __FUNCTION__, cpu); - return -EINVAL; + err = -EINVAL; + goto out_release; } /* Ensure that we are not runnable on dying cpu */ @@ -187,6 +188,7 @@ out_thread: err = kthread_stop(p); out_allowed: set_cpus_allowed(current, old_allowed); +out_release: raw_notifier_call_chain(&cpu_chain, CPU_LOCK_RELEASE, (void *)(long)cpu); return err; _