microcode_update_helper() may return early while holding
cpu_add_remove_lock, hence preventing any writers from taking it again.
Leave through the `put` label instead so it's properly released.
Fixes: 5ed12565aa32 ("microcode: rendezvous CPUs in NMI handler and load ucode")
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit:
b35b22acb887f682efe8385b3df165220bc84c86
master date: 2023-06-05 16:11:10 +0100
printk(XENLOG_WARNING
"CPU%u is expected to lead ucode loading (but got CPU%u)\n",
nmi_cpu, cpumask_first(&cpu_online_map));
- return -EPERM;
+ ret = -EPERM;
+ goto put;
}
patch = parse_blob(buffer->buffer, buffer->len);