Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/sriov:fix memory leak in psp_load_fw

for SR-IOV when doing gpu reset this routine shouldn't do
resource allocating otherwise memory leak

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Monk Liu and committed by
Alex Deucher
77a3c96b 503846e0

+12 -8
+12 -8
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
··· 334 334 int ret; 335 335 struct psp_context *psp = &adev->psp; 336 336 337 + if (amdgpu_sriov_vf(adev) && adev->in_gpu_reset != 0) 338 + goto skip_memalloc; 339 + 337 340 psp->cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL); 338 341 if (!psp->cmd) 339 342 return -ENOMEM; 340 343 341 344 ret = amdgpu_bo_create_kernel(adev, PSP_1_MEG, PSP_1_MEG, 342 - AMDGPU_GEM_DOMAIN_GTT, 343 - &psp->fw_pri_bo, 344 - &psp->fw_pri_mc_addr, 345 - &psp->fw_pri_buf); 345 + AMDGPU_GEM_DOMAIN_GTT, 346 + &psp->fw_pri_bo, 347 + &psp->fw_pri_mc_addr, 348 + &psp->fw_pri_buf); 346 349 if (ret) 347 350 goto failed; 348 351 349 352 ret = amdgpu_bo_create_kernel(adev, PSP_FENCE_BUFFER_SIZE, PAGE_SIZE, 350 - AMDGPU_GEM_DOMAIN_VRAM, 351 - &psp->fence_buf_bo, 352 - &psp->fence_buf_mc_addr, 353 - &psp->fence_buf); 353 + AMDGPU_GEM_DOMAIN_VRAM, 354 + &psp->fence_buf_bo, 355 + &psp->fence_buf_mc_addr, 356 + &psp->fence_buf); 354 357 if (ret) 355 358 goto failed_mem2; 356 359 ··· 378 375 if (ret) 379 376 goto failed_mem; 380 377 378 + skip_memalloc: 381 379 ret = psp_hw_start(psp); 382 380 if (ret) 383 381 goto failed_mem;