libvhost-user: Mark mmap'ed region memory as MADV_DONTDUMP
We already use MADV_NORESERVE to deal with sparse memory regions. Let's also set madvise(MADV_DONTDUMP), otherwise a crash of the process can result in us allocating all memory in the mmap'ed region for dumping purposes. This change implies that the mmap'ed rings won't be included in a coredump. If ever required for debugging purposes, we could mark only the mapped rings MADV_DODUMP. Ignore errors during madvise() for now. Reviewed-by: Raphael Norwitz <raphael@enfabrica.net> Acked-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20240214151701.29906-15-david@redhat.com> Tested-by: Mario Casquero <mcasquer@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
67f4f663cd
commit
52767e1063
@ -460,6 +460,12 @@ _vu_add_mem_reg(VuDev *dev, VhostUserMemoryRegion *msg_region, int fd)
|
|||||||
DPRINT(" mmap_addr: 0x%016"PRIx64"\n",
|
DPRINT(" mmap_addr: 0x%016"PRIx64"\n",
|
||||||
(uint64_t)(uintptr_t)mmap_addr);
|
(uint64_t)(uintptr_t)mmap_addr);
|
||||||
|
|
||||||
|
#if defined(__linux__)
|
||||||
|
/* Don't include all guest memory in a coredump. */
|
||||||
|
madvise(mmap_addr, msg_region->memory_size + mmap_offset,
|
||||||
|
MADV_DONTDUMP);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Shift all affected entries by 1 to open a hole at idx. */
|
/* Shift all affected entries by 1 to open a hole at idx. */
|
||||||
r = &dev->regions[idx];
|
r = &dev->regions[idx];
|
||||||
memmove(r + 1, r, sizeof(VuDevRegion) * (dev->nregions - idx));
|
memmove(r + 1, r, sizeof(VuDevRegion) * (dev->nregions - idx));
|
||||||
|
Loading…
Reference in New Issue
Block a user