qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 1/3] s390x: fix memleaks in cpu_finalize


From: Pan Nengyuan
Subject: Re: [PATCH v4 1/3] s390x: fix memleaks in cpu_finalize
Date: Thu, 5 Mar 2020 17:03:19 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2


On 3/5/2020 4:34 PM, David Hildenbrand wrote:
> 
>>  #if !defined(CONFIG_USER_ONLY)
>>      MachineState *ms = MACHINE(qdev_get_machine());
>>      unsigned int max_cpus = ms->smp.max_cpus;
>> +
>> +    cpu->env.tod_timer =
>> +        timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu);
>> +    cpu->env.cpu_timer =
>> +        timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_cpu_timer, cpu);
>> +
>>      if (cpu->env.core_id >= max_cpus) {
>>          error_setg(&err, "Unable to add CPU with core-id: %" PRIu32
>>                     ", maximum core-id: %d", cpu->env.core_id,
>> @@ -224,9 +230,38 @@ static void s390_cpu_realizefn(DeviceState *dev, Error 
>> **errp)
>>  
>>      scc->parent_realize(dev, &err);
>>  out:
>> +    if (cpu->env.tod_timer) {
>> +        timer_del(cpu->env.tod_timer);
>> +    }
>> +    if (cpu->env.cpu_timer) {
>> +        timer_del(cpu->env.cpu_timer);
>> +    }
>> +    timer_free(cpu->env.tod_timer);
>> +    timer_free(cpu->env.cpu_timer);
> 
> timer_free() should be sufficient, as it cannot be running, no?

Yes, it's redundant.

> 
>>      error_propagate(errp, err);
>>  }
>>  
>> +static void s390_cpu_unrealizefn(DeviceState *dev, Error **errp)
>> +{
>> +    S390CPUClass *scc = S390_CPU_GET_CLASS(dev);
>> +    Error *err = NULL;
>> +
>> +#if !defined(CONFIG_USER_ONLY)
>> +    S390CPU *cpu = S390_CPU(dev);
>> +
>> +    timer_del(cpu->env.tod_timer);
>> +    timer_del(cpu->env.cpu_timer);
>> +    timer_free(cpu->env.tod_timer);
>> +    timer_free(cpu->env.cpu_timer);
>> +#endif
>> +
>> +    scc->parent_unrealize(dev, &err);
>> +    if (err != NULL) {
>> +        error_propagate(errp, err);
>> +        return;
>> +    }
>> +}
> 
> Simply a
> 
> scc->parent_unrealize(dev, errp) and you can drop the temporary variable.

Fine, it looks more clear and I will change it.
And I think it's the same on x86_cpu_unrealize/ppc_cpu_unrealize, I refer to 
the implement of them.

Thanks.

> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]