On 01/29/2018 01:24 PM, Erik Skultety wrote:
On Fri, Jan 26, 2018 at 12:39:00PM +0100, Michal Privoznik wrote:
> On 01/25/2018 10:23 AM, Erik Skultety wrote:
>> This is a replacement for the existing udevPCIGetMdevTypesCap which is
>> static to the udev backend. This simple helper constructs the sysfs path
>> from the device's base path for each mdev type and queries the
>> corresponding attributes of that type.
>>
>> Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
>> ---
>> src/libvirt_private.syms | 1 +
>> src/util/virpci.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
>> src/util/virpci.h | 4 ++++
>> 3 files changed, 63 insertions(+)
>>
>> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>> index 75eaf1d4c..8d4c8dd3f 100644
>> --- a/src/libvirt_private.syms
>> +++ b/src/libvirt_private.syms
>> @@ -2456,6 +2456,7 @@ virPCIDeviceWaitForCleanup;
>> virPCIEDeviceInfoFree;
>> virPCIGetDeviceAddressFromSysfsLink;
>> virPCIGetHeaderType;
>> +virPCIGetMdevTypes;
>> virPCIGetNetName;
>> virPCIGetPhysicalFunction;
>> virPCIGetVirtualFunctionIndex;
>> diff --git a/src/util/virpci.c b/src/util/virpci.c
>> index fe57bef32..12d7ef0e4 100644
>> --- a/src/util/virpci.c
>> +++ b/src/util/virpci.c
>> @@ -3027,6 +3027,64 @@ virPCIGetVirtualFunctionInfo(const char
*vf_sysfs_device_path,
>> return ret;
>> }
>>
>> +
>> +int
>> +virPCIGetMdevTypes(const char *sysfspath,
>> + virMediatedDeviceTypePtr **types)
>
> Since this function returns size_t on success, I guess the retval should
> be type of ssize_t at least. We are not guaranteed that size_t will fit
ssize_t wouldn't really help, since assigning size_t might overflow, so the
only safe bet is long long, but I mean, do you really expect there to be more
than INT_MAX mdev types for a device? That would be a lot of types to support.
In kernel, they do a lot of size_t -> ssize_t conversion in cases
where's it's next to impossible to overflow. And I believe this is one
of them.
Michal