spapr: fix potential memory leak in spapr_core_plug()
Since commit 5c1da81215c7 ("spapr: Remove unnecessary differences between hotplug and coldplug paths"), the CPU DT for the DRC is always allocated. This causes a memory leak for pseries-2.6 and older machine types, that don't support CPU hotplug and don't allocate DRCs for CPUs. Reported-by: Bharata B Rao <bharata@linux.vnet.ibm.com> Signed-off-by: Greg Kurz <groug@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
67fea71bf3
commit
e49c63d5b3
@ -2974,8 +2974,6 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
|||||||
CPUState *cs = CPU(core->threads);
|
CPUState *cs = CPU(core->threads);
|
||||||
sPAPRDRConnector *drc;
|
sPAPRDRConnector *drc;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
void *fdt = NULL;
|
|
||||||
int fdt_offset = 0;
|
|
||||||
int smt = kvmppc_smt_threads();
|
int smt = kvmppc_smt_threads();
|
||||||
CPUArchId *core_slot;
|
CPUArchId *core_slot;
|
||||||
int index;
|
int index;
|
||||||
@ -2991,9 +2989,12 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
|||||||
|
|
||||||
g_assert(drc || !mc->has_hotpluggable_cpus);
|
g_assert(drc || !mc->has_hotpluggable_cpus);
|
||||||
|
|
||||||
fdt = spapr_populate_hotplug_cpu_dt(cs, &fdt_offset, spapr);
|
|
||||||
|
|
||||||
if (drc) {
|
if (drc) {
|
||||||
|
void *fdt;
|
||||||
|
int fdt_offset;
|
||||||
|
|
||||||
|
fdt = spapr_populate_hotplug_cpu_dt(cs, &fdt_offset, spapr);
|
||||||
|
|
||||||
spapr_drc_attach(drc, dev, fdt, fdt_offset, &local_err);
|
spapr_drc_attach(drc, dev, fdt, fdt_offset, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
g_free(fdt);
|
g_free(fdt);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user