aboutsummaryrefslogtreecommitdiff
path: root/lib/libvfio-user.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libvfio-user.c')
-rw-r--r--lib/libvfio-user.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/libvfio-user.c b/lib/libvfio-user.c
index 0440351..f4aa804 100644
--- a/lib/libvfio-user.c
+++ b/lib/libvfio-user.c
@@ -532,11 +532,12 @@ handle_dma_map_or_unmap(vfu_ctx_t *vfu_ctx, uint32_t size, bool map,
region->size, fd, region->offset,
region->prot);
if (ret < 0) {
+ ret = -errno;
+ vfu_log(vfu_ctx, LOG_ERR, "failed to add DMA region %s: %m",
+ rstr);
if (fd != -1) {
close(fd);
}
- vfu_log(vfu_ctx, LOG_ERR, "failed to add DMA region %s: %s",
- rstr, strerror(-ret));
break;
}
@@ -553,8 +554,9 @@ handle_dma_map_or_unmap(vfu_ctx_t *vfu_ctx, uint32_t size, bool map,
vfu_ctx->dma_unregister,
vfu_ctx);
if (ret < 0) {
- vfu_log(vfu_ctx, LOG_ERR, "failed to remove DMA region %s: %s",
- rstr, strerror(-ret));
+ ret = -errno;
+ vfu_log(vfu_ctx, LOG_ERR, "failed to remove DMA region %s: %m",
+ rstr);
break;
}
}
@@ -603,6 +605,7 @@ handle_dirty_pages_get(vfu_ctx_t *vfu_ctx,
r->bitmap.size,
(char**)&((*iovecs)[i].iov_base));
if (ret != 0) {
+ ret = -errno;
goto out;
}
(*iovecs)[i].iov_len = r->bitmap.size;
@@ -637,8 +640,12 @@ MOCK_DEFINE(handle_dirty_pages)(vfu_ctx_t *vfu_ctx, uint32_t size,
if (dirty_bitmap->flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_START) {
ret = dma_controller_dirty_page_logging_start(vfu_ctx->dma,
migration_get_pgsize(vfu_ctx->migration));
+ if (ret == -1) {
+ ret = -errno;
+ }
} else if (dirty_bitmap->flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP) {
- ret = dma_controller_dirty_page_logging_stop(vfu_ctx->dma);
+ dma_controller_dirty_page_logging_stop(vfu_ctx->dma);
+ ret = 0;
} else if (dirty_bitmap->flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP) {
ret = handle_dirty_pages_get(vfu_ctx, iovecs, nr_iovecs,
(struct vfio_iommu_type1_dirty_bitmap_get*)(dirty_bitmap + 1),
@@ -1520,7 +1527,7 @@ vfu_map_sg(vfu_ctx_t *vfu_ctx, const dma_sg_t *sg,
ret = dma_map_sg(vfu_ctx->dma, sg, iov, cnt);
if (ret < 0) {
- return ERROR_INT(-ret);
+ return -1;
}
return 0;