Remove terminate_vm/vm_remove logic from vmm_dispatch_parent. This
logic is present in vmm_sighdlr when a VM process has signaled
SIGCHLD for proper cleanup.

diff --git usr.sbin/vmd/vmm.c usr.sbin/vmd/vmm.c
index ccd7680b479..8cc1c15157a 100644
--- usr.sbin/vmd/vmm.c
+++ usr.sbin/vmd/vmm.c
@@ -170,15 +170,13 @@ vmm_dispatch_parent(int fd, struct privsep_proc *p, 
struct imsg *imsg)
                                else
                                        res = 0;
                        } else {
-                               /* in the process of shutting down... */
-                               log_debug("%s: performing a forced shutdown",
-                                   __func__);
+                               /*
+                                * VM is currently being shutdown.
+                                * Check to see if the VM process is still
+                                * active.  If not, return VMD_VM_STOP_INVALID.
+                                */
                                vtp.vtp_vm_id = vm_vmid2id(vm->vm_vmid, vm);
-                               /* ensure vm_id isn't 0 */
-                               if (vtp.vtp_vm_id != 0) {
-                                       res = terminate_vm(&vtp);
-                                       vm_remove(vm);
-                               } else {
+                               if (vtp.vtp_vm_id == 0) {
                                        log_debug("%s: no vm running anymore",
                                            __func__);
                                        res = VMD_VM_STOP_INVALID;
-- 
2.14.2

Reply via email to