aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSwapnil Ingle <swapnil.ingle@nutanix.com>2021-11-11 19:25:34 +0100
committerGitHub <noreply@github.com>2021-11-11 19:25:34 +0100
commit56842967566dcf4b89514949a6e88ba89eeaf268 (patch)
tree24cb4b4548093f56fb2ea476365e0f532344baad /lib
parent8614299d1cce54a1a30c209c99e3a659f01bf365 (diff)
downloadlibvfio-user-56842967566dcf4b89514949a6e88ba89eeaf268.zip
libvfio-user-56842967566dcf4b89514949a6e88ba89eeaf268.tar.gz
libvfio-user-56842967566dcf4b89514949a6e88ba89eeaf268.tar.bz2
Fix reply of VFIO_USER_DEVICE_GET_REGION_INFO (#619)
* Fix reply of VFIO_USER_DEVICE_GET_REGION_INFO Set VFIO_REGION_INFO_FLAG_CAPS flag only if caps are part of the reply. Signed-off-by: Swapnil Ingle <swapnil.ingle@nutanix.com> Reviewed-by: John Levon <john.levon@nutanix.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/libvfio-user.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libvfio-user.c b/lib/libvfio-user.c
index a56d34c..3bbad42 100644
--- a/lib/libvfio-user.c
+++ b/lib/libvfio-user.c
@@ -405,6 +405,7 @@ handle_device_get_region_info(vfu_ctx_t *vfu_ctx, vfu_msg_t *msg)
struct vfio_region_info *out_info;
vfu_reg_info_t *vfu_reg;
size_t caps_size = 0;
+ int ret;
assert(vfu_ctx != NULL);
assert(msg != NULL);
@@ -457,12 +458,15 @@ handle_device_get_region_info(vfu_ctx_t *vfu_ctx, vfu_msg_t *msg)
}
if (caps_size > 0) {
- out_info->flags |= VFIO_REGION_INFO_FLAG_CAPS;
/* Only actually provide the caps if they fit. */
if (in_info->argsz >= out_info->argsz) {
- dev_get_caps(vfu_ctx, vfu_reg,
- in_info->index == VFU_PCI_DEV_MIGR_REGION_IDX,
- out_info, &msg->out_fds, &msg->nr_out_fds);
+ out_info->flags |= VFIO_REGION_INFO_FLAG_CAPS;
+ ret = dev_get_caps(vfu_ctx, vfu_reg,
+ in_info->index == VFU_PCI_DEV_MIGR_REGION_IDX,
+ out_info, &msg->out_fds, &msg->nr_out_fds);
+ if (ret < 0) {
+ return ret;
+ }
}
}