[PATCH kernel] vfio/spapr/nvlink2: Skip unpinning pages on error exit

Alex Williamson alex.williamson at redhat.com
Sat Jan 11 03:03:06 AEDT 2020


On Mon, 23 Dec 2019 12:09:27 +1100
Alexey Kardashevskiy <aik at 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 <aik at 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



More information about the Linuxppc-dev mailing list