Claudio Jeker(cje...@diehard.n-r-g.com) on 2022.01.04 14:12:02 +0100:
> On Tue, Jan 04, 2022 at 10:58:41AM +0100, Claudio Jeker wrote:
> > This are obvious and easy to fix unused but set variables.
> > There are more in vioscsi.c but those are actually used if compiled with
> > DEBUG set.
> 
> The changes in loadfile_elf.c, vioqcow2.c and vmd.c are trivial and can be
> committed one by one. 

ok on those

> The change in vmm.c actually uncovered a possible
> issue. If vm_register() fails the vm pointer will most probably be NULL
> and so the next line will access a NULL pointer.
> 
> I think this diff is better. It cleans up also a totally unused
> IMSG_VMDOP_RECEIVE_VM_RESPONSE imsg type.

looks ok too, i think.
  
> It is hard to fail the vm_register() call so it is not trivial to really
> test the error case but I did test vmctl receive and that still works.
> -- 
> :wq Claudio
> 
> Index: control.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/vmd/control.c,v
> retrieving revision 1.38
> diff -u -p -r1.38 control.c
> --- control.c 29 Nov 2021 05:17:35 -0000      1.38
> +++ control.c 4 Jan 2022 12:05:35 -0000
> @@ -94,7 +94,6 @@ control_dispatch_vmd(int fd, struct priv
>       case IMSG_VMDOP_START_VM_RESPONSE:
>       case IMSG_VMDOP_PAUSE_VM_RESPONSE:
>       case IMSG_VMDOP_SEND_VM_RESPONSE:
> -     case IMSG_VMDOP_RECEIVE_VM_RESPONSE:
>       case IMSG_VMDOP_UNPAUSE_VM_RESPONSE:
>       case IMSG_VMDOP_GET_INFO_VM_DATA:
>       case IMSG_VMDOP_GET_INFO_VM_END_DATA:
> Index: vmd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/vmd/vmd.h,v
> retrieving revision 1.107
> diff -u -p -r1.107 vmd.h
> --- vmd.h     29 Nov 2021 05:17:35 -0000      1.107
> +++ vmd.h     4 Jan 2022 12:05:24 -0000
> @@ -101,7 +101,6 @@ enum imsg_type {
>       IMSG_VMDOP_SEND_VM_REQUEST,
>       IMSG_VMDOP_SEND_VM_RESPONSE,
>       IMSG_VMDOP_RECEIVE_VM_REQUEST,
> -     IMSG_VMDOP_RECEIVE_VM_RESPONSE,
>       IMSG_VMDOP_RECEIVE_VM_END,
>       IMSG_VMDOP_WAIT_VM_REQUEST,
>       IMSG_VMDOP_TERMINATE_VM_REQUEST,
> Index: vmm.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/vmd/vmm.c,v
> retrieving revision 1.102
> diff -u -p -r1.102 vmm.c
> --- vmm.c     29 Nov 2021 05:17:35 -0000      1.102
> +++ vmm.c     4 Jan 2022 12:05:04 -0000
> @@ -102,7 +102,7 @@ int
>  vmm_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg)
>  {
>       struct privsep          *ps = p->p_ps;
> -     int                      res = 0, cmd = 0, verbose, ret;
> +     int                      res = 0, cmd = 0, verbose;
>       struct vmd_vm           *vm = NULL;
>       struct vm_terminate_params vtp;
>       struct vmop_id           vid;
> @@ -278,8 +278,12 @@ vmm_dispatch_parent(int fd, struct privs
>       case IMSG_VMDOP_RECEIVE_VM_REQUEST:
>               IMSG_SIZE_CHECK(imsg, &vmc);
>               memcpy(&vmc, imsg->data, sizeof(vmc));
> -             ret = vm_register(ps, &vmc, &vm,
> -                 imsg->hdr.peerid, vmc.vmc_owner.uid);
> +             if (vm_register(ps, &vmc, &vm,
> +                 imsg->hdr.peerid, vmc.vmc_owner.uid) != 0) {
> +                     res = errno;
> +                     cmd = IMSG_VMDOP_START_VM_RESPONSE;
> +                     break;
> +             }
>               vm->vm_tty = imsg->fd;
>               vm->vm_state |= VM_STATE_RECEIVED;
>               vm->vm_state |= VM_STATE_PAUSED;
> @@ -328,6 +332,7 @@ vmm_dispatch_parent(int fd, struct privs
>               }
>               if (id == 0)
>                       id = imsg->hdr.peerid;
> +             /* FALLTHROUGH */
>       case IMSG_VMDOP_PAUSE_VM_RESPONSE:
>       case IMSG_VMDOP_UNPAUSE_VM_RESPONSE:
>       case IMSG_VMDOP_TERMINATE_VM_RESPONSE:
> 

Reply via email to