Re: [PATCH] drm/amdkfd: fix double free device pgmap resource

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 2021-04-26 um 2:41 p.m. schrieb Philip Yang:
> Use devm_memunmap_pages instead of memunmap_pages to release pgmap
> and remove pgmap from device action, to avoid double free pgmap when
> unloading driver module.
>
> Release device memory region if failed to create device memory pages
> structure.
>
> Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx>

Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx>


> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> index a66b67083d83..6b810863f6ba 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> @@ -912,6 +912,8 @@ int svm_migrate_init(struct amdgpu_device *adev)
>  	r = devm_memremap_pages(adev->dev, pgmap);
>  	if (IS_ERR(r)) {
>  		pr_err("failed to register HMM device memory\n");
> +		devm_release_mem_region(adev->dev, res->start,
> +					res->end - res->start + 1);
>  		return PTR_ERR(r);
>  	}
>  
> @@ -927,5 +929,9 @@ int svm_migrate_init(struct amdgpu_device *adev)
>  
>  void svm_migrate_fini(struct amdgpu_device *adev)
>  {
> -	memunmap_pages(&adev->kfd.dev->pgmap);
> +	struct dev_pagemap *pgmap = &adev->kfd.dev->pgmap;
> +
> +	devm_memunmap_pages(adev->dev, pgmap);
> +	devm_release_mem_region(adev->dev, pgmap->range.start,
> +				pgmap->range.end - pgmap->range.start + 1);
>  }
_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux