diff mbox series

Fix segmentation fault when VM shutdown with virtio-gpu unplugged

Message ID 20231110043916.1116-1-wubinfeng@huawei.com (mailing list archive)
State New, archived
Headers show
Series Fix segmentation fault when VM shutdown with virtio-gpu unplugged | expand

Commit Message

Binfeng Wu Nov. 10, 2023, 4:39 a.m. UTC
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(+)

Comments

Michael S. Tsirkin Nov. 10, 2023, 5:40 a.m. UTC | #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
Binfeng Wu Nov. 10, 2023, 6:51 a.m. UTC | #2
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
> 
> 
> .
>
diff mbox series

Patch

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);
 }