[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/3] i386/cpu: release GuestPanicInformation memory
From: |
Denis V. Lunev |
Subject: |
[Qemu-devel] [PATCH 1/3] i386/cpu: release GuestPanicInformation memory |
Date: |
Mon, 20 Feb 2017 21:21:53 +0300 |
From: Anton Nefedov <address@hidden>
Do not make some foreign function do it.
Signed-off-by: Anton Nefedov <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
CC: Paolo Bonzini <address@hidden>
CC: Eric Blake <address@hidden>
---
kvm-all.c | 5 ++++-
vl.c | 22 +++++++++-------------
2 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/kvm-all.c b/kvm-all.c
index 0c94637..ac07902 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1909,6 +1909,7 @@ int kvm_cpu_exec(CPUState *cpu)
do {
MemTxAttrs attrs;
+ GuestPanicInformation *crash_info;
if (cpu->kvm_vcpu_dirty) {
kvm_arch_put_registers(cpu, KVM_PUT_RUNTIME_STATE);
@@ -2001,9 +2002,11 @@ int kvm_cpu_exec(CPUState *cpu)
break;
case KVM_SYSTEM_EVENT_CRASH:
kvm_cpu_synchronize_state(cpu);
+ crash_info = cpu_get_crash_info(cpu);
qemu_mutex_lock_iothread();
- qemu_system_guest_panicked(cpu_get_crash_info(cpu));
+ qemu_system_guest_panicked(crash_info);
qemu_mutex_unlock_iothread();
+ qapi_free_GuestPanicInformation(crash_info);
ret = 0;
break;
default:
diff --git a/vl.c b/vl.c
index 27d9829..81382b6 100644
--- a/vl.c
+++ b/vl.c
@@ -1682,6 +1682,15 @@ void qemu_system_reset(bool report)
void qemu_system_guest_panicked(GuestPanicInformation *info)
{
qemu_log_mask(LOG_GUEST_ERROR, "Guest crashed\n");
+ if (info && info->type == GUEST_PANIC_INFORMATION_KIND_HYPER_V) {
+ qemu_log_mask(LOG_GUEST_ERROR, "HV crash parameters: (%#"PRIx64
+ " %#"PRIx64" %#"PRIx64" %#"PRIx64" %#"PRIx64")\n",
+ info->u.hyper_v.data->arg1,
+ info->u.hyper_v.data->arg2,
+ info->u.hyper_v.data->arg3,
+ info->u.hyper_v.data->arg4,
+ info->u.hyper_v.data->arg5);
+ }
if (current_cpu) {
current_cpu->crash_occurred = true;
@@ -1694,19 +1703,6 @@ void qemu_system_guest_panicked(GuestPanicInformation
*info)
!!info, info, &error_abort);
qemu_system_shutdown_request();
}
-
- if (info) {
- if (info->type == GUEST_PANIC_INFORMATION_KIND_HYPER_V) {
- qemu_log_mask(LOG_GUEST_ERROR, "HV crash parameters: (%#"PRIx64
- " %#"PRIx64" %#"PRIx64" %#"PRIx64" %#"PRIx64")\n",
- info->u.hyper_v.data->arg1,
- info->u.hyper_v.data->arg2,
- info->u.hyper_v.data->arg3,
- info->u.hyper_v.data->arg4,
- info->u.hyper_v.data->arg5);
- }
- qapi_free_GuestPanicInformation(info);
- }
}
void qemu_system_reset_request(void)
--
2.7.4