On Thu, Jun 15, 2017 at 11:14:24AM +0530, Bharata B Rao wrote: > If ppc_cpu_realizefn() fails after cpu_exec_realizefn() has been > called, we will have to undo whatever cpu_exec_realizefn() did > by explicitly calling cpu_exec_unrealizeffn() which is currently > missing. Failure to do this proper cleanup will result in CPU > which was never fully realized to linger on the cpus list causing > SIGSEGV later (for eg when running "info cpus"). > > Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com>
Applied to ppc-for-2.10. > --- > target/ppc/translate_init.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c > index e837cd2..53aff5a 100644 > --- a/target/ppc/translate_init.c > +++ b/target/ppc/translate_init.c > @@ -9825,14 +9825,14 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error > **errp) > error_append_hint(errp, "Adjust the number of cpus to %d " > "or try to raise the number of threads per core\n", > cpu->cpu_dt_id * smp_threads / max_smt); > - return; > + goto unrealize; > } > #endif > > if (tcg_enabled()) { > if (ppc_fixup_cpu(cpu) != 0) { > error_setg(errp, "Unable to emulate selected CPU with TCG"); > - return; > + goto unrealize; > } > } > > @@ -9841,14 +9841,14 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error > **errp) > error_setg(errp, "CPU does not possess a BookE or 4xx MMU. " > "Please use qemu-system-ppc or qemu-system-ppc64 instead " > "or choose another CPU model."); > - return; > + goto unrealize; > } > #endif > > create_ppc_opcodes(cpu, &local_err); > if (local_err != NULL) { > error_propagate(errp, local_err); > - return; > + goto unrealize; > } > init_ppc_proc(cpu); > > @@ -10033,6 +10033,10 @@ static void ppc_cpu_realizefn(DeviceState *dev, > Error **errp) > fflush(stdout); > } > #endif > + return; > + > +unrealize: > + cpu_exec_unrealizefn(cs); > } > > static void ppc_cpu_unrealizefn(DeviceState *dev, Error **errp) -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature