From b4baf039588830dfd580a59e7d05efbc65cb6d03 Mon Sep 17 00:00:00 2001 From: John Levon Date: Tue, 16 Feb 2021 16:11:35 +0000 Subject: fix DEVICE_GET_INFO specification and handling (#344) The specification for DEVICE_GET_INFO differed from the implementation. After some discussion, fix the spec such that the struct should be passed in with ->argsz set. As it happened, the implementation was also wrong: we weren't actually checking the incoming ->argsz for validation, but we should. Signed-off-by: John Levon Reviewed-by: Thanos Makatos --- docs/vfio-user.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'docs') diff --git a/docs/vfio-user.rst b/docs/vfio-user.rst index e3adc7a..f4562ef 100644 --- a/docs/vfio-user.rst +++ b/docs/vfio-user.rst @@ -714,7 +714,7 @@ Message format +--------------+----------------------------+ | Command | 4 | +--------------+----------------------------+ -| Message size | 16 in command, 32 in reply | +| Message size | 32 | +--------------+----------------------------+ | Flags | Reply bit set in reply | +--------------+----------------------------+ @@ -724,9 +724,8 @@ Message format +--------------+----------------------------+ This command message is sent by the client to the server to query for basic -information about the device. Only the message header is needed in the command -message. The VFIO device info structure is defined in ```` -(``struct vfio_device_info``). +information about the device. The VFIO device info structure is defined in +```` (``struct vfio_device_info``). VFIO device info format ^^^^^^^^^^^^^^^^^^^^^^^ @@ -751,7 +750,9 @@ VFIO device info format | num_irqs | 28 | 4 | +-------------+--------+--------------------------+ -* *argsz* is the size of the VFIO device info structure. +* *argsz* is the size of the VFIO device info structure. This is the only field +that should be set to non-zero in the request, identifying the client's expected +size. Currently this is a fixed value. * *flags* contains the following device attributes. * VFIO_DEVICE_FLAGS_RESET indicates that the device supports the -- cgit v1.1