summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorZheng Xiang <xiang.zheng@linaro.org>2018-06-22 13:28:35 +0100
committerPeter Maydell <peter.maydell@linaro.org>2018-06-22 13:28:35 +0100
commit5ff9aaabdc6aec367ba139bf3f2ccacd918a495f (patch)
tree6d8d38a134f6558b31f3667d0ad0801446e37e01
parent8297cb13e407db8a96cc7ed6b6a6c318a150759a (diff)
downloadfocaccia-qemu-5ff9aaabdc6aec367ba139bf3f2ccacd918a495f.tar.gz
focaccia-qemu-5ff9aaabdc6aec367ba139bf3f2ccacd918a495f.zip
target-arm: fix a segmentation fault due to illegal memory access
The elements of kvm_devices_head list are freed in kvm_arm_machine_init_done(),
but we still access these illegal memory in kvm_arm_devlistener_del().

This will cause segment fault when booting guest with MALLOC_PERTURB_=1.

Signed-off-by: Zheng Xiang <xiang.zheng@linaro.org>
Message-id: 20180619075821.9884-1-zhengxiang9@huawei.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--target/arm/kvm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index 98f5006323..5bf41e151c 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -256,6 +256,7 @@ static void kvm_arm_machine_init_done(Notifier *notifier, void *data)
             kvm_arm_set_device_addr(kd);
         }
         memory_region_unref(kd->mr);
+        QSLIST_REMOVE_HEAD(&kvm_devices_head, entries);
         g_free(kd);
     }
     memory_listener_unregister(&devlistener);