X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=kernel%2Fcpu.c;h=78f7bf338191928c378452cef6b1e0130f3af9ff;hb=b49a457681f98ef1060ba27bd94a25fe5199a93b;hp=aa991fe560ad219a09585adbb28ecae3636b2a77;hpb=027c991036297cf519886ce855544d3a11e381af;p=mirror_ubuntu-bionic-kernel.git diff --git a/kernel/cpu.c b/kernel/cpu.c index aa991fe560ad..78f7bf338191 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -939,7 +939,8 @@ static int cpuhp_down_callbacks(unsigned int cpu, struct cpuhp_cpu_state *st, ret = cpuhp_invoke_callback(cpu, st->state, false, NULL, NULL); if (ret) { st->target = prev_state; - undo_cpu_down(cpu, st); + if (st->state < prev_state) + undo_cpu_down(cpu, st); break; } } @@ -992,7 +993,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen, * to do the further cleanups. */ ret = cpuhp_down_callbacks(cpu, st, target); - if (ret && st->state > CPUHP_TEARDOWN_CPU && st->state < prev_state) { + if (ret && st->state == CPUHP_TEARDOWN_CPU && st->state < prev_state) { cpuhp_reset_state(st, prev_state); __cpuhp_kick_ap(st); }