On Mon, 23 Dec 2019 12:09:27 +1100
Alexey Kardashevskiy <a...@ozlabs.ru> 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 <a...@ozlabs.ru>
> ---
>  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

Reply via email to