Commit 376692b9dc6(cpus: protect work list with work_mutex)
initialize a work_mutex in cpu_common_initfn, however forget
to destroy it. This will cause resource leak when hotunplug cpu
or hotplug cpu fails.
Signed-off-by: Li Qiang <liq3ea@163.com>
---
qom/cpu.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/qom/cpu.c b/qom/cpu.c
index 9ad1372d57..367ebf9d61 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -380,6 +380,9 @@ static void cpu_common_initfn(Object *obj)
static void cpu_common_finalize(Object *obj)
{
+ CPUState *cpu = CPU(obj);
+
+ qemu_mutex_destroy(&cpu->work_mutex);
}
static int64_t cpu_common_get_arch_id(CPUState *cpu)
--
2.17.1
On 1/2/19 8:41 AM, Li Qiang wrote:
> Commit 376692b9dc6(cpus: protect work list with work_mutex)
> initialize a work_mutex in cpu_common_initfn, however forget
> to destroy it. This will cause resource leak when hotunplug cpu
> or hotplug cpu fails.
>
Long standing leak ;)
Maybe add:
Fixes: 376692b9dc6
> Signed-off-by: Li Qiang <liq3ea@163.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> qom/cpu.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/qom/cpu.c b/qom/cpu.c
> index 9ad1372d57..367ebf9d61 100644
> --- a/qom/cpu.c
> +++ b/qom/cpu.c
> @@ -380,6 +380,9 @@ static void cpu_common_initfn(Object *obj)
>
> static void cpu_common_finalize(Object *obj)
> {
> + CPUState *cpu = CPU(obj);
> +
> + qemu_mutex_destroy(&cpu->work_mutex);
> }
>
> static int64_t cpu_common_get_arch_id(CPUState *cpu)
>
On 02/01/19 08:41, Li Qiang wrote:
> Commit 376692b9dc6(cpus: protect work list with work_mutex)
> initialize a work_mutex in cpu_common_initfn, however forget
> to destroy it. This will cause resource leak when hotunplug cpu
> or hotplug cpu fails.
>
> Signed-off-by: Li Qiang <liq3ea@163.com>
> ---
> qom/cpu.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/qom/cpu.c b/qom/cpu.c
> index 9ad1372d57..367ebf9d61 100644
> --- a/qom/cpu.c
> +++ b/qom/cpu.c
> @@ -380,6 +380,9 @@ static void cpu_common_initfn(Object *obj)
>
> static void cpu_common_finalize(Object *obj)
> {
> + CPUState *cpu = CPU(obj);
> +
> + qemu_mutex_destroy(&cpu->work_mutex);
> }
>
> static int64_t cpu_common_get_arch_id(CPUState *cpu)
>
Queued, thanks.
Paolo
Hi Paolo,
What's the status of this patch? I don't see it in upstream.
Thanks,
Li Qiang
At 2019-01-08 07:41:09, "Paolo Bonzini" <pbonzini@redhat.com> wrote:
>On 02/01/19 08:41, Li Qiang wrote:
>> Commit 376692b9dc6(cpus: protect work list with work_mutex)
>> initialize a work_mutex in cpu_common_initfn, however forget
>> to destroy it. This will cause resource leak when hotunplug cpu
>> or hotplug cpu fails.
>>
>> Signed-off-by: Li Qiang <liq3ea@163.com>
>> ---
>> qom/cpu.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/qom/cpu.c b/qom/cpu.c
>> index 9ad1372d57..367ebf9d61 100644
>> --- a/qom/cpu.c
>> +++ b/qom/cpu.c
>> @@ -380,6 +380,9 @@ static void cpu_common_initfn(Object *obj)
>>
>> static void cpu_common_finalize(Object *obj)
>> {
>> + CPUState *cpu = CPU(obj);
>> +
>> + qemu_mutex_destroy(&cpu->work_mutex);
>> }
>>
>> static int64_t cpu_common_get_arch_id(CPUState *cpu)
>>
>
>Queued, thanks.
>
>Paolo
© 2016 - 2025 Red Hat, Inc.