From: YiPeng Chai Date: Tue, 12 May 2026 03:00:14 +0000 (+0800) Subject: drm/amd/ras: fix memory leak on ras sw_init failure X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=642ed3af44dbe2c1258bfbcda8c294bc3cfd1d39;p=thirdparty%2Flinux.git drm/amd/ras: fix memory leak on ras sw_init failure Fix memory leak on ras sw_init failure. Signed-off-by: YiPeng Chai Reviewed-by: Tao Zhou Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c index c12e756b4ef0..a22d1aebbeb9 100644 --- a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c +++ b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c @@ -309,13 +309,17 @@ static int amdgpu_ras_mgr_sw_init(struct amdgpu_ip_block *ip_block) if (!ras_mgr->ras_core) { RAS_DEV_ERR(adev, "Failed to create ras core!\n"); ret = -EINVAL; - goto err; + goto err1; } ras_mgr->ras_core->dev = adev; amdgpu_ras_process_init(adev); - ras_core_sw_init(ras_mgr->ras_core); + ret = ras_core_sw_init(ras_mgr->ras_core); + if (ret) { + RAS_DEV_ERR(adev, "ras_core_sw_init failed! ret:%d\n", ret); + goto err2; + } amdgpu_ras_mgr_init_event_mgr(ras_mgr->ras_core); if (amdgpu_sriov_vf(adev)) { @@ -323,14 +327,22 @@ static int amdgpu_ras_mgr_sw_init(struct amdgpu_ip_block *ip_block) if (ret) { RAS_DEV_ERR(adev, "Virt ras sw_init failed! ret:%d\n", ret); - goto err; + goto err3; } } return 0; -err: +err3: + if (ras_mgr->ras_core) + ras_core_sw_fini(ras_mgr->ras_core); +err2: + amdgpu_ras_process_fini(adev); + if (ras_mgr->ras_core) + ras_core_destroy(ras_mgr->ras_core); +err1: kfree(ras_mgr); + con->ras_mgr = NULL; return ret; }