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

Reply via email to