From: Peter Dinda Date: Mon, 23 Jun 2014 18:05:13 +0000 (-0500) Subject: Guest control cleanup X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=e8ee9e1536b3fa2e69f5537a90f5e034e9529248 Guest control cleanup --- diff --git a/linux_module/iface-code-inject.c b/linux_module/iface-code-inject.c index 1add908..1262d77 100644 --- a/linux_module/iface-code-inject.c +++ b/linux_module/iface-code-inject.c @@ -135,6 +135,7 @@ static int guest_init_code_inject (struct v3_guest * guest, void ** vm_data) { static int guest_deinit_code_inject (struct v3_guest * guest, void * vm_data) { free_inject_data(); + remove_guest_ctrl(guest, V3_VM_TOPHALF_INJECT); return 0; } diff --git a/linux_module/iface-env-inject.c b/linux_module/iface-env-inject.c index 115d867..af8ff6d 100644 --- a/linux_module/iface-env-inject.c +++ b/linux_module/iface-env-inject.c @@ -132,6 +132,7 @@ static int guest_init_env_inject (struct v3_guest * guest, void ** vm_data) { static int guest_deinit_env_inject (struct v3_guest * guest, void * vm_data) { free_inject_data(); + remove_guest_ctrl(guest, V3_VM_ENV_INJECT); return 0; } diff --git a/linux_module/iface-graphics-console.c b/linux_module/iface-graphics-console.c index a29533e..6744cfd 100644 --- a/linux_module/iface-graphics-console.c +++ b/linux_module/iface-graphics-console.c @@ -475,10 +475,14 @@ static int graphics_console_guest_deinit(struct v3_guest * guest, void * vm_data list_del(&(graphics_cons->gcons_node)); + remove_guest_ctrl(guest, V3_VM_FB_INPUT); + remove_guest_ctrl(guest, V3_VM_FB_QUERY); + if (graphics_cons->data) { palacios_vfree(graphics_cons->data); } + palacios_free(graphics_cons); return 0; diff --git a/linux_module/iface-guard-mods.c b/linux_module/iface-guard-mods.c index 37a5203..18ee4c3 100644 --- a/linux_module/iface-guard-mods.c +++ b/linux_module/iface-guard-mods.c @@ -195,6 +195,7 @@ guest_init_guard_mods (struct v3_guest * guest, void ** vm_data) static int guest_deinit_guard_mods (struct v3_guest * guest, void * vm_data) { + remove_guest_ctrl(guest, V3_VM_REGISTER_MOD); return 0; } diff --git a/linux_module/iface-host-dev.c b/linux_module/iface-host-dev.c index 23a3a09..680d753 100644 --- a/linux_module/iface-host-dev.c +++ b/linux_module/iface-host-dev.c @@ -1352,6 +1352,7 @@ static int host_dev_guest_init(struct v3_guest * guest, void ** vm_data ) { static int host_dev_guest_deinit(struct v3_guest * guest, void * vm_data) { struct palacios_host_dev * host_dev = (struct palacios_host_dev *) vm_data; + remove_guest_ctrl(guest, V3_VM_HOST_DEV_CONNECT); palacios_spinlock_deinit(&(host_dev->lock)); palacios_free(host_dev); return 0; diff --git a/linux_module/iface-host-hypercall.c b/linux_module/iface-host-hypercall.c index 8ce514c..4ed2f63 100644 --- a/linux_module/iface-host-hypercall.c +++ b/linux_module/iface-host-hypercall.c @@ -134,6 +134,8 @@ static int guest_init_host_hypercall (struct v3_guest * guest, void ** vm_data) static int guest_deinit_host_hypercall (struct v3_guest * guest, void * vm_data) { + remove_guest_ctrl(guest, V3_VM_HYPERCALL_ADD); + remove_guest_ctrl(guest, V3_VM_HYPERCALL_REMOVE); return 0; } diff --git a/linux_module/iface-keyed-stream.c b/linux_module/iface-keyed-stream.c index dd218d0..5bce431 100644 --- a/linux_module/iface-keyed-stream.c +++ b/linux_module/iface-keyed-stream.c @@ -3177,6 +3177,7 @@ static int guest_init_keyed_streams(struct v3_guest * guest, void ** vm_data ) static int guest_deinit_keyed_streams(struct v3_guest * guest, void * vm_data) { + remove_guest_ctrl(guest, V3_VM_KSTREAM_USER_CONNECT); return 0; } diff --git a/linux_module/iface-stream.c b/linux_module/iface-stream.c index 27bfe42..36c6185 100644 --- a/linux_module/iface-stream.c +++ b/linux_module/iface-stream.c @@ -400,6 +400,9 @@ static int guest_stream_deinit(struct v3_guest * guest, void * vm_data) { struct stream_state * stream = NULL; struct stream_state * tmp = NULL; + + remove_guest_ctrl(guest, V3_VM_STREAM_CONNECT); + list_for_each_entry_safe(stream, tmp, &(global_streams), stream_node) { free_ringbuf(stream->out_ring); list_del(&(stream->stream_node)); @@ -407,6 +410,7 @@ static int guest_stream_deinit(struct v3_guest * guest, void * vm_data) { } palacios_free(state); + return 0; } diff --git a/linux_module/iface-syscall.c b/linux_module/iface-syscall.c index 1ed9972..8e94354 100644 --- a/linux_module/iface-syscall.c +++ b/linux_module/iface-syscall.c @@ -79,6 +79,7 @@ static int guest_init_syscall_ctrl (struct v3_guest * guest, void ** vm_data) { static int guest_deinit_syscall_ctrl (struct v3_guest * guest, void * vm_data) { + remove_guest_ctrl(guest, V3_VM_SYSCALL_CTRL); return 0; } diff --git a/linux_module/inspector.c b/linux_module/inspector.c index 56b6fa5..867bba1 100644 --- a/linux_module/inspector.c +++ b/linux_module/inspector.c @@ -101,7 +101,8 @@ static int guest_init(struct v3_guest * guest, void ** vm_data) { } static int guest_deinit(struct v3_guest * guest, void * vm_data) { - + remove_guest_ctrl(guest, V3_VM_INSPECT); + return 0; } diff --git a/linux_module/mcheck.c b/linux_module/mcheck.c index cbb06d7..8b3c5b2 100644 --- a/linux_module/mcheck.c +++ b/linux_module/mcheck.c @@ -47,6 +47,7 @@ static int guest_init(struct v3_guest * guest, void ** vm_data) { static int guest_deinit(struct v3_guest * guest, void * vm_data) { + remove_guest_ctrl(guest, V3_VM_INJECT_SCRUBBER_MCE); return 0; }