On 15.02.2013, at 15:25, Andreas Färber wrote: > Since we still need env for ppc-specific fields, obtain it via the new > env_ptr fields to avoid "cpu" name conflicts between CPUState and > PowerPCCPU for now. > > This fixes a potential issue with env being NULL at the end of the loop > but cpu still being a valid pointer corresponding to a previous env. > > Signed-off-by: Andreas Färber <afaer...@suse.de> > --- > Alex, this is a rebased and slimmed-down version of yesterday's paste. > Can you ack please? Thanks, /-F
In your QOM conversion you also converted other places like this. Have you verified that these don't suffer from the same problem? Alex > > hw/ppc/e500.c | 11 +++-------- > 1 Datei geändert, 3 Zeilen hinzugefügt(+), 8 Zeilen entfernt(-) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index b7474c0..451682c 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -240,20 +240,15 @@ static int ppce500_load_device_tree(CPUPPCState *env, > /* We need to generate the cpu nodes in reverse order, so Linux can pick > the first node as boot node and be happy */ > for (i = smp_cpus - 1; i >= 0; i--) { > - CPUState *cpu = NULL; > + CPUState *cpu; > char cpu_name[128]; > uint64_t cpu_release_addr = MPC8544_SPIN_BASE + (i * 0x20); > > - for (env = first_cpu; env != NULL; env = env->next_cpu) { > - cpu = ENV_GET_CPU(env); > - if (cpu->cpu_index == i) { > - break; > - } > - } > - > + cpu = qemu_get_cpu(i); > if (cpu == NULL) { > continue; > } > + env = cpu->env_ptr; > > snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x", > cpu->cpu_index); > -- > 1.7.10.4 >