From c0f982b1a373fd99235a31394fff12f935c1bde1 Mon Sep 17 00:00:00 2001 From: Thanos Makatos Date: Wed, 16 Dec 2020 11:03:41 -0500 Subject: fail to map segment if DMA region isn't backed by file descriptor Signed-off-by: Thanos Makatos --- lib/dma.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/dma.h b/lib/dma.h index e0d6d72..aeed9bb 100644 --- a/lib/dma.h +++ b/lib/dma.h @@ -246,9 +246,12 @@ dma_map_sg(dma_controller_t *dma, const dma_sg_t *sg, struct iovec *iov, if (sg[i].region >= dma->nregions) { return -EINVAL; } + region = &dma->regions[sg[i].region]; + if (region->virt_addr == NULL) { + return -EFAULT; + } vfu_log(dma->vfu_ctx, LOG_DEBUG, "map %#lx-%#lx\n", sg->dma_addr + sg->offset, sg->dma_addr + sg->offset + sg->length); - region = &dma->regions[sg[i].region]; iov[i].iov_base = region->virt_addr + sg[i].offset; iov[i].iov_len = sg[i].length; region->refcnt++; -- cgit v1.1