HomeFreeBSD

vmm: Fix VM_GET_CPUS compatibility

Description

vmm: Fix VM_GET_CPUS compatibility

bhyve in a 13.x jail fails to boot guests with more than one vCPU
because they pass too small a buffer to VM_GET_CPUS, causing the ioctl
handler to return ERANGE. Handle this the same way as cpuset system
calls: make sure that the result can fit in the truncated space, and
relax the check on the cpuset buffer.

As a side effect, fix an insufficient bounds check on "size". The
signed/unsigned comparison with sizeof(cpuset_t) fails to exclude
negative values, so we can end up allocating impossibly large amounts of
memory.

Reviewed by: jhb
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D41496

Details

Provenance
markjAuthored on Aug 17 2023, 6:49 PM
Reviewer
jhb
Differential Revision
D41496: vmm: Fix VM_GET_CPUS compatibility
Parents
rG5ad59b91535f: intr: merge interrupt table uses of MAXCOMLEN into INTRNAME_LEN
Branches
Unknown
Tags
Unknown