Claudio Jeker([email protected]) 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:
>