diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0970-drm-amdgpu-fix-memory-leak-in-CGS-FW-info.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0970-drm-amdgpu-fix-memory-leak-in-CGS-FW-info.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/common/recipes-kernel/linux/files/0970-drm-amdgpu-fix-memory-leak-in-CGS-FW-info.patch b/common/recipes-kernel/linux/files/0970-drm-amdgpu-fix-memory-leak-in-CGS-FW-info.patch deleted file mode 100644 index 39621012..00000000 --- a/common/recipes-kernel/linux/files/0970-drm-amdgpu-fix-memory-leak-in-CGS-FW-info.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 7de9db94df0fbd976cc2e69efde4bef2506802d4 Mon Sep 17 00:00:00 2001 -From: Mykola Lysenko <Mykola.Lysenko@amd.com> -Date: Wed, 30 Mar 2016 05:50:11 -0400 -Subject: [PATCH 0970/1110] drm/amdgpu: fix memory leak in CGS (FW info) - -Previously requested FW pointer should not be -overwrite - -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Mykola Lysenko <Mykola.Lysenko@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 70 +++++++++++++++++---------------- - 1 file changed, 36 insertions(+), 34 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -index 837cdd2..490464e 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -@@ -735,42 +735,44 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, - const uint8_t *src; - const struct smc_firmware_header_v1_0 *hdr; - -- switch (adev->asic_type) { -- case CHIP_TONGA: -- strcpy(fw_name, "amdgpu/tonga_smc.bin"); -- break; -- case CHIP_FIJI: -- strcpy(fw_name, "amdgpu/fiji_smc.bin"); -- break; -- case CHIP_POLARIS11: -- if (type == CGS_UCODE_ID_SMU) -- strcpy(fw_name, "amdgpu/polaris11_smc.bin"); -- else if (type == CGS_UCODE_ID_SMU_SK) -- strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); -- break; -- case CHIP_POLARIS10: -- if (type == CGS_UCODE_ID_SMU) -- strcpy(fw_name, "amdgpu/polaris10_smc.bin"); -- else if (type == CGS_UCODE_ID_SMU_SK) -- strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); -- break; -- default: -- DRM_ERROR("SMC firmware not supported\n"); -- return -EINVAL; -- } -+ if (!adev->pm.fw) { -+ switch (adev->asic_type) { -+ case CHIP_TONGA: -+ strcpy(fw_name, "amdgpu/tonga_smc.bin"); -+ break; -+ case CHIP_FIJI: -+ strcpy(fw_name, "amdgpu/fiji_smc.bin"); -+ break; -+ case CHIP_POLARIS11: -+ if (type == CGS_UCODE_ID_SMU) -+ strcpy(fw_name, "amdgpu/polaris11_smc.bin"); -+ else if (type == CGS_UCODE_ID_SMU_SK) -+ strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); -+ break; -+ case CHIP_POLARIS10: -+ if (type == CGS_UCODE_ID_SMU) -+ strcpy(fw_name, "amdgpu/polaris10_smc.bin"); -+ else if (type == CGS_UCODE_ID_SMU_SK) -+ strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); -+ break; -+ default: -+ DRM_ERROR("SMC firmware not supported\n"); -+ return -EINVAL; -+ } - -- err = request_firmware(&adev->pm.fw, fw_name, adev->dev); -- if (err) { -- DRM_ERROR("Failed to request firmware\n"); -- return err; -- } -+ err = request_firmware(&adev->pm.fw, fw_name, adev->dev); -+ if (err) { -+ DRM_ERROR("Failed to request firmware\n"); -+ return err; -+ } - -- err = amdgpu_ucode_validate(adev->pm.fw); -- if (err) { -- DRM_ERROR("Failed to load firmware \"%s\"", fw_name); -- release_firmware(adev->pm.fw); -- adev->pm.fw = NULL; -- return err; -+ err = amdgpu_ucode_validate(adev->pm.fw); -+ if (err) { -+ DRM_ERROR("Failed to load firmware \"%s\"", fw_name); -+ release_firmware(adev->pm.fw); -+ adev->pm.fw = NULL; -+ return err; -+ } - } - - hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data; --- -2.7.4 - |