| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-39291: drm/amdgpu: Fix buffer size in gfx_v9_4_3_init_ cp_compute_microcode() and rlc_microcode() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drm/amdgpu: Fix buffer size in gfx_v9_4_3_init_ cp_compute_microcode() and rlc_microcode() |
| |
| The function gfx_v9_4_3_init_microcode in gfx_v9_4_3.c was generating |
| about potential truncation of output when using the snprintf function. |
| The issue was due to the size of the buffer 'ucode_prefix' being too |
| small to accommodate the maximum possible length of the string being |
| written into it. |
| |
| The string being written is "amdgpu/%s_mec.bin" or "amdgpu/%s_rlc.bin", |
| where %s is replaced by the value of 'chip_name'. The length of this |
| string without the %s is 16 characters. The warning message indicated |
| that 'chip_name' could be up to 29 characters long, resulting in a total |
| of 45 characters, which exceeds the buffer size of 30 characters. |
| |
| To resolve this issue, the size of the 'ucode_prefix' buffer has been |
| reduced from 30 to 15. This ensures that the maximum possible length of |
| the string being written into the buffer will not exceed its size, thus |
| preventing potential buffer overflow and truncation issues. |
| |
| Fixes the below with gcc W=1: |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c: In function ‘gfx_v9_4_3_early_init’: |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:379:52: warning: ‘%s’ directive output may be truncated writing up to 29 bytes into a region of size 23 [-Wformat-truncation=] |
| 379 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); |
| | ^~ |
| ...... |
| 439 | r = gfx_v9_4_3_init_rlc_microcode(adev, ucode_prefix); |
| | ~~~~~~~~~~~~ |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:379:9: note: ‘snprintf’ output between 16 and 45 bytes into a destination of size 30 |
| 379 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:413:52: warning: ‘%s’ directive output may be truncated writing up to 29 bytes into a region of size 23 [-Wformat-truncation=] |
| 413 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); |
| | ^~ |
| ...... |
| 443 | r = gfx_v9_4_3_init_cp_compute_microcode(adev, ucode_prefix); |
| | ~~~~~~~~~~~~ |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:413:9: note: ‘snprintf’ output between 16 and 45 bytes into a destination of size 30 |
| 413 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| The Linux kernel CVE team has assigned CVE-2024-39291 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.5 with commit 86301129698be52f8398f92ea8564168f6bfcae1 and fixed in 6.6.33 with commit 19bd9537b6bc1c882df25206c15917214d8e9460 |
| Issue introduced in 6.5 with commit 86301129698be52f8398f92ea8564168f6bfcae1 and fixed in 6.9.4 with commit f1b6a016dfa45cedc080d36fa5d6f22237d80e8b |
| Issue introduced in 6.5 with commit 86301129698be52f8398f92ea8564168f6bfcae1 and fixed in 6.10 with commit acce6479e30f73ab0872e93a75aed1fb791d04ec |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-39291 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/19bd9537b6bc1c882df25206c15917214d8e9460 |
| https://git.kernel.org/stable/c/f1b6a016dfa45cedc080d36fa5d6f22237d80e8b |
| https://git.kernel.org/stable/c/acce6479e30f73ab0872e93a75aed1fb791d04ec |