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 <wangmeilin...@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 <wangmeilin...@huawei.com>
Signed-off-by: wubinfeng <wubinf...@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 <wangmeilin...@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: wangmeilin...@huawei.com
>> Signed-off-by: wubinf...@huawei.com
> 
> You need to add your real names, not just email.
> 
> With that:
> Acked-by: Michael S. Tsirkin <m...@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
> 
> 
> .
> 

Reply via email to