hw/display/virtio-gpu-base.c | 2 ++ 1 file changed, 2 insertions(+)
From: wangmeiling <wangmeiling21@huawei.com>
In the virtio-gpu unrealize process, the vdev structure has been cleaned up.
However, vm_change_state_handler is not cleaned up yet, which is related to
vdev. This handler will be cleaned up when VM shutdown, but the vdev is
already a null pointer at this time, this will lead to segmentation fault.
Signed-off-by: wangmeiling21@huawei.com
Signed-off-by: wubinfeng@huawei.com
---
hw/display/virtio-gpu-base.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
index 37af256219..b31b8d683f 100644
--- a/hw/display/virtio-gpu-base.c
+++ b/hw/display/virtio-gpu-base.c
@@ -252,6 +252,8 @@ virtio_gpu_base_device_unrealize(DeviceState *qdev)
{
VirtIOGPUBase *g = VIRTIO_GPU_BASE(qdev);
+ virtio_cleanup(VIRTIO_DEVICE(g));
+
migrate_del_blocker(&g->migration_blocker);
}
--
2.20.1
On Fri, Nov 10, 2023 at 12:39:16PM +0800, Binfeng Wu wrote:
> From: wangmeiling <wangmeiling21@huawei.com>
>
> In the virtio-gpu unrealize process, the vdev structure has been cleaned up.
> However, vm_change_state_handler is not cleaned up yet, which is related to
> vdev. This handler will be cleaned up when VM shutdown, but the vdev is
> already a null pointer at this time, this will lead to segmentation fault.
>
> Signed-off-by: wangmeiling21@huawei.com
> Signed-off-by: wubinfeng@huawei.com
You need to add your real names, not just email.
With that:
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/display/virtio-gpu-base.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
> index 37af256219..b31b8d683f 100644
> --- a/hw/display/virtio-gpu-base.c
> +++ b/hw/display/virtio-gpu-base.c
> @@ -252,6 +252,8 @@ virtio_gpu_base_device_unrealize(DeviceState *qdev)
> {
> VirtIOGPUBase *g = VIRTIO_GPU_BASE(qdev);
>
> + virtio_cleanup(VIRTIO_DEVICE(g));
> +
> migrate_del_blocker(&g->migration_blocker);
> }
>
> --
> 2.20.1
Sorry for this mistake. Please check now.
Please let us know if we need resubmit it.
From e798cf68b1a4043dcf8dda9b895812c1dab88da2 Mon Sep 17 00:00:00 2001
From: wangmeiling <wangmeiling21@huawei.com>
Date: Fri, 10 Nov 2023 10:17:54 +0800
Subject: [PATCH] Fix segmentation fault when VM shutdown with virtio-gpu
unplugged
In the virtio-gpu unrealize process, the vdev structure has been cleaned up.
However, vm_change_state_handler is not cleaned up yet, which is related to
vdev. This handler will be cleaned up when VM shutdown, but the vdev is
already a null pointer at this time, this will lead to segmentation fault.
Signed-off-by: wangmeiling <wangmeiling21@huawei.com>
Signed-off-by: wubinfeng <wubinfeng@huawei.com>
---
hw/display/virtio-gpu-base.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
index 37af256219..b31b8d683f 100644
--- a/hw/display/virtio-gpu-base.c
+++ b/hw/display/virtio-gpu-base.c
@@ -252,6 +252,8 @@ virtio_gpu_base_device_unrealize(DeviceState *qdev)
{
VirtIOGPUBase *g = VIRTIO_GPU_BASE(qdev);
+ virtio_cleanup(VIRTIO_DEVICE(g));
+
migrate_del_blocker(&g->migration_blocker);
}
--
2.20.1
在 2023/11/10 13:40, Michael S. Tsirkin 写道:
> On Fri, Nov 10, 2023 at 12:39:16PM +0800, Binfeng Wu wrote:
>> From: wangmeiling <wangmeiling21@huawei.com>
>>
>> In the virtio-gpu unrealize process, the vdev structure has been cleaned up.
>> However, vm_change_state_handler is not cleaned up yet, which is related to
>> vdev. This handler will be cleaned up when VM shutdown, but the vdev is
>> already a null pointer at this time, this will lead to segmentation fault.
>>
>> Signed-off-by: wangmeiling21@huawei.com
>> Signed-off-by: wubinfeng@huawei.com
>
> You need to add your real names, not just email.
>
> With that:
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
>
>> ---
>> hw/display/virtio-gpu-base.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
>> index 37af256219..b31b8d683f 100644
>> --- a/hw/display/virtio-gpu-base.c
>> +++ b/hw/display/virtio-gpu-base.c
>> @@ -252,6 +252,8 @@ virtio_gpu_base_device_unrealize(DeviceState *qdev)
>> {
>> VirtIOGPUBase *g = VIRTIO_GPU_BASE(qdev);
>>
>> + virtio_cleanup(VIRTIO_DEVICE(g));
>> +
>> migrate_del_blocker(&g->migration_blocker);
>> }
>>
>> --
>> 2.20.1
>
>
> .
>
© 2016 - 2025 Red Hat, Inc.