On Fri, Feb 16, 2018 at 01:18:31PM -0800, Pratik Vyas wrote: > * Pratik Vyas <[email protected]> [2018-02-16 09:15:07 -0800]: > > > * Abel Abraham Camarillo Ojeda <[email protected]> [2018-02-15 06:06:50 > > -0600]: > > > > > > Synopsis: vmctl(8) pause never returns > > > > This should fix it. It checks if vm id is valid before sending to vmm > > for pausing. The 'lock' is caused by vmm sending back ENOENT for a non > > existent vm but vmd drops the message because it doesn't recogize the > > vmid vmm is talking about. This is an artifact of the 'policy' don't > > trust any imsg from a sibling priv sep processes and do your own > > checking. > > > > > > Index: usr.sbin/vmd/vmd.c > > =================================================================== > > RCS file: /home/pdvyas/cvs/src/usr.sbin/vmd/vmd.c,v > > retrieving revision 1.79 > > diff -u -p -a -u -r1.79 vmd.c > > --- usr.sbin/vmd/vmd.c 10 Jan 2018 14:59:59 -0000 1.79 > > +++ usr.sbin/vmd/vmd.c 16 Feb 2018 17:06:20 -0000 > > @@ -186,6 +186,10 @@ vmd_dispatch_control(int fd, struct priv > > } else { > > vid.vid_id = vm->vm_vmid; > > } > > + } else if (vm_getbyid(vid.vid_id) == NULL) { > > + res = ENOENT; > > + cmd = IMSG_VMDOP_PAUSE_VM_RESPONSE; > > + break; > > } > > proc_compose_imsg(ps, PROC_VMM, -1, imsg->hdr.type, > > imsg->hdr.peerid, -1, &vid, sizeof(vid)); > > Forgot to mention: asking for ok :)
ok ccardenas@ +--+ Carlos
