On Thu, Jun 11, 2020 at 01:31:05PM +0100, David Edmondson wrote: > On Thursday, 2020-06-04 at 22:15:42 -04, Yan Zhao wrote: > > > On Thu, Jun 04, 2020 at 05:25:15PM +0200, Cornelia Huck wrote: > >> On Sun, 17 May 2020 22:49:44 -0400 > >> Yan Zhao <yan.y.zhao@xxxxxxxxx> wrote: > >> > >> > This allows a simpler VFIO_DEVICE_GET_INFO ioctl in vendor driver > >> > > >> > Cc: Kevin Tian <kevin.tian@xxxxxxxxx> > >> > Signed-off-by: Yan Zhao <yan.y.zhao@xxxxxxxxx> > >> > --- > >> > drivers/vfio/pci/vfio_pci.c | 23 +++++++++++++++++++++-- > >> > drivers/vfio/pci/vfio_pci_private.h | 2 ++ > >> > include/linux/vfio.h | 3 +++ > >> > 3 files changed, 26 insertions(+), 2 deletions(-) > >> > > >> > diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c > >> > index 290b7ab55ecf..30137c1c5308 100644 > >> > --- a/drivers/vfio/pci/vfio_pci.c > >> > +++ b/drivers/vfio/pci/vfio_pci.c > >> > @@ -105,6 +105,24 @@ void *vfio_pci_vendor_data(void *device_data) > >> > } > >> > EXPORT_SYMBOL_GPL(vfio_pci_vendor_data); > >> > > >> > +int vfio_pci_set_vendor_regions(void *device_data, int num_vendor_regions) > >> > +{ > >> > + struct vfio_pci_device *vdev = device_data; > >> > + > >> > + vdev->num_vendor_regions = num_vendor_regions; > >> > >> Do we need any kind of sanity check here, in case this is called with a > >> bogus value? > >> > > you are right. it at least needs to be >=0. > > maybe type of "unsigned int" is more appropriate for num_vendor_regions. > > we don't need to check its max value as QEMU would check it. > > That seems like a bad precedent - the caller may not be QEMU. > but the caller has to query that through vfio_pci_ioctl() and at there info.num_regions = VFIO_PCI_NUM_REGIONS + vdev->num_regions + vdev->num_vendor_regions; info.num_regions is of type __u32. Thanks Yan