spapr: Don't request to unplug the same core twice
We must not call spapr_drc_detach() on a detached DRC otherwise bad things can happen, ie. QEMU hangs or crashes. This is easily demonstrated with a CPU hotplug/unplug loop using QMP. Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <157185826035.3073024.1664101000438499392.stgit@bahia.lan> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
cb97526aa4
commit
47c8c915b1
@ -3741,9 +3741,10 @@ void spapr_core_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev,
|
||||
spapr_vcpu_id(spapr, cc->core_id));
|
||||
g_assert(drc);
|
||||
|
||||
spapr_drc_detach(drc);
|
||||
|
||||
spapr_hotplug_req_remove_by_index(drc);
|
||||
if (!spapr_drc_unplug_requested(drc)) {
|
||||
spapr_drc_detach(drc);
|
||||
spapr_hotplug_req_remove_by_index(drc);
|
||||
}
|
||||
}
|
||||
|
||||
int spapr_core_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr,
|
||||
|
Loading…
Reference in New Issue
Block a user