On Mon, 23 Dec 2019 12:09:27 +1100 Alexey Kardashevskiy <aik@xxxxxxxxx> wrote: > The nvlink2 subdriver for IBM Witherspoon machines preregisters > GPU memory in the IOMMI API so KVM TCE code can map this memory > for DMA as well. This is done by mm_iommu_newdev() called from > vfio_pci_nvgpu_regops::mmap. > > In an unlikely event of failure the data->mem remains NULL and > since mm_iommu_put() (which unregisters the region and unpins memory > if that was regular memory) does not expect mem==NULL, it should not be > called. > > This adds a check to only call mm_iommu_put() for a valid data->mem. > > Fixes: 7f92891778df ("vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver") > Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx> > --- > drivers/vfio/pci/vfio_pci_nvlink2.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/vfio/pci/vfio_pci_nvlink2.c b/drivers/vfio/pci/vfio_pci_nvlink2.c > index f2983f0f84be..3f5f8198a6bb 100644 > --- a/drivers/vfio/pci/vfio_pci_nvlink2.c > +++ b/drivers/vfio/pci/vfio_pci_nvlink2.c > @@ -97,8 +97,10 @@ static void vfio_pci_nvgpu_release(struct vfio_pci_device *vdev, > > /* If there were any mappings at all... */ > if (data->mm) { > - ret = mm_iommu_put(data->mm, data->mem); > - WARN_ON(ret); > + if (data->mem) { > + ret = mm_iommu_put(data->mm, data->mem); > + WARN_ON(ret); > + } > > mmdrop(data->mm); > } Applied to vfio next branch for v5.6. Thanks, Alex