update to redis-6.2.23
"A crafted stream `RESTORE` payload can make two consumers share the
same NACK, leading to a use-after-free that may result in Remote Code
Execution"
Kill the uvm_pmalloc mechanism. This never really worked, at least until
kirill@ fixed some page number/address confusement. But it can't really
work since pages freed by the pagedaemon are likely going to be grabbed
by other consumers before we issue a wakeup through the uvm_pmalloc
mechanism. At this point the consensus is that it adds complexity to the
pagedaemon that stands in the way of progress.
Discussed with claudio@ and deraadt@
ok deraadt@
vmd(8): guard firmware config system state with a mutex.
While vmd is not yet SMP, if multiple VCPUs emulate io to the Qemu
firmware config registers simultaneously, they will race in mutating
and observing state.
Report and diff by Andrew Griffiths.
ok hshoexer@
vmd(8): reject GPAs in holes during gpa translation.
vmd independentaly allocates guest memory in a series of ranges,
mirroring the physical memory layout for the guest. The GPA translation
in find_gap_range() incorrectly selects a memory range if the GPA
is in a hole between two guest memory ranges. Make the initial check
that the GPA falls within the bounds of a known memory range instead
of just prior to the end.
Report and diff by Andrew Griffiths.
ok hshoexer@
vmd(8): guard virtio entropy device register io with a mutex.
While vmd isn't yet SMP capable, in the event multiple VCPU thread
exist they may interleave in emulation of register access of the
virtio entropy device because it's currently emulated in the vm
process.
Report and diff by Andrew Griffiths.
ok hshoexer@
vmd(8): initialize the direct-boot argument page.
In vmd's ELF loader, the boot args page is copied into guest memory
from the stack without complete initialization. Initialize to zero
to prevent leaking stack values into guest memory.
Report and diff by Andrew Griffiths.
ok hshoexer@
Reject invalid payload sizes at vmd(8) control boundary.
When we introduced agressive parsing and santization of imsg objects,
it introduced the ability for a control socket client to force vmd
to exit via fatal() calls. A simple solution is to validate just
the size of the object at the control process boundary as that's
the primary logic for triggering fatal() calls. This may need a
greater redesign but that would require inspecting all imsg
deseralization call points. For now, the author's proposal is fine.
Report and diff by Andrew Griffiths.
ok hshoexer@