On Thu, Feb 10, 2022 at 03:01:50PM +0000, Shameerali Kolothum Thodi wrote: > > > + unsigned int index = VFIO_PCI_OFFSET_TO_INDEX(*ppos); > > > + struct vfio_pci_core_device *vdev = > > > + container_of(core_vdev, struct vfio_pci_core_device, vdev); > > > + > > > + if (index == VFIO_PCI_BAR2_REGION_INDEX) { > > > + loff_t pos = *ppos & VFIO_PCI_OFFSET_MASK; > > > + resource_size_t end = pci_resource_len(vdev->pdev, index) / 2; > > > > Be careful here, there are nested assignment use cases. This can only > > survive one level of assignment before we've restricted more than we > > intended. If migration support is dependent on PF access, can we use > > that to determine when to when to expose only half the BAR and when to > > expose the full BAR? > > Ok. I will add a check here. You might be better to just install a different ops when migration is not supported, none of this stuff should be actived in that case. Jason