aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libvfio-user.c5
-rw-r--r--test/py/test_device_get_region_io_fds.py2
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/libvfio-user.c b/lib/libvfio-user.c
index 69aeb36..25b58e0 100644
--- a/lib/libvfio-user.c
+++ b/lib/libvfio-user.c
@@ -576,6 +576,11 @@ handle_device_get_region_io_fds(vfu_ctx_t *vfu_ctx, vfu_msg_t *msg)
vfu_reg = &vfu_ctx->reg_info[req->index];
+ // At least one flag must be set for a valid region.
+ if (!(vfu_reg->flags & VFU_REGION_FLAG_MASK)) {
+ return ERROR_INT(EINVAL);
+ }
+
LIST_FOREACH(sub_reg, &vfu_reg->subregions, entry) {
nr_sub_reg++;
}
diff --git a/test/py/test_device_get_region_io_fds.py b/test/py/test_device_get_region_io_fds.py
index 63e3236..2179cf7 100644
--- a/test/py/test_device_get_region_io_fds.py
+++ b/test/py/test_device_get_region_io_fds.py
@@ -140,7 +140,7 @@ def test_device_get_region_io_fds_no_regions_setup():
index = VFU_PCI_DEV_BAR3_REGION_IDX, count = 0)
ret = msg(ctx, sock, VFIO_USER_DEVICE_GET_REGION_IO_FDS, payload,
- expect = 0)
+ expect = errno.EINVAL)
def test_device_get_region_io_fds_region_no_mmap():