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>
This commit is contained in:
Zheng Xiang 2018-06-22 13:28:35 +01:00 committed by Peter Maydell
parent 8297cb13e4
commit 5ff9aaabdc
1 changed files with 1 additions and 0 deletions

View File

@ -256,6 +256,7 @@ static void kvm_arm_machine_init_done(Notifier *notifier, void *data)
kvm_arm_set_device_addr(kd); kvm_arm_set_device_addr(kd);
} }
memory_region_unref(kd->mr); memory_region_unref(kd->mr);
QSLIST_REMOVE_HEAD(&kvm_devices_head, entries);
g_free(kd); g_free(kd);
} }
memory_listener_unregister(&devlistener); memory_listener_unregister(&devlistener);