vmd(8): fix use of qcow base images.
authordv <dv@openbsd.org>
Sat, 15 Jul 2023 18:32:21 +0000 (18:32 +0000)
committerdv <dv@openbsd.org>
Sat, 15 Jul 2023 18:32:21 +0000 (18:32 +0000)
commit80149ef1f4abf93b166f16da9cf99d8c4fb8e111
tree666cf3017828a72fc91d57283585538ad3fd24a1
parent1efd72e262edec98442f35e1e9bf35d19f11eeec
vmd(8): fix use of qcow base images.

The vm process was prematurely setting device fds to not close-on-exec
and then trying to close(2) them after the fork(2) of the device
process.

This caused a reuse of an fd for one of the socketpair(2)'s for
communication between vm and device. Having device processes close(2)
other device fds after fork would break the socketpair, causing the
device to fail during startup post-exec when trying to receive its
device state from the parent vm process.

Instead, mark the fds to not close on exec post-fork(2) call allowing
other device fds to be closed automatically and avoid closing by
the tracked fd.

Reported by solene@. OK tb@.
usr.sbin/vmd/virtio.c