CVE-2024-50221: drm/amd/pm: Vangogh: Fix kernel memory out of bounds write
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/pm: Vangogh: Fix kernel memory out of bounds write
KASAN reports that the GPU metrics table allocated in
vangogh_tables_init() is not large enough for the memset done in
smu_cmn_init_soft_gpu_metrics(). Condensed report follows:
[ 33.861314] BUG: KASAN: slab-out-of-bounds in smu_cmn_init_soft_gpu_metrics+0x73/0x200 [amdgpu]
[ 33.861799] Write of size 168 at addr ffff888129f59500 by task mangoapp/1067
...
[ 33.861808] CPU: 6 UID: 1000 PID: 1067 Comm: mangoapp Tainted: G W 6.12.0-rc4 #356 1a56f59a8b5182eeaf67eb7cb8b13594dd23b544
[ 33.861816] Tainted: [W]=WARN
[ 33.861818] Hardware name: Valve Galileo/Galileo, BIOS F7G0107 12/01/2023
[ 33.861822] Call Trace:
[ 33.861826] <TASK>
[ 33.861829] dump_stack_lvl+0x66/0x90
[ 33.861838] print_report+0xce/0x620
[ 33.861853] kasan_report+0xda/0x110
[ 33.862794] kasan_check_range+0xfd/0x1a0
[ 33.862799] __asan_memset+0x23/0x40
[ 33.862803] smu_cmn_init_soft_gpu_metrics+0x73/0x200 [amdgpu 13b1bc364ec578808f676eba412c20eaab792779]
[ 33.863306] vangogh_get_gpu_metrics_v2_4+0x123/0xad0 [amdgpu 13b1bc364ec578808f676eba412c20eaab792779]
[ 33.864257] vangogh_common_get_gpu_metrics+0xb0c/0xbc0 [amdgpu 13b1bc364ec578808f676eba412c20eaab792779]
[ 33.865682] amdgpu_dpm_get_gpu_metrics+0xcc/0x110 [amdgpu 13b1bc364ec578808f676eba412c20eaab792779]
[ 33.866160] amdgpu_get_gpu_metrics+0x154/0x2d0 [amdgpu 13b1bc364ec578808f676eba412c20eaab792779]
[ 33.867135] dev_attr_show+0x43/0xc0
[ 33.867147] sysfs_kf_seq_show+0x1f1/0x3b0
[ 33.867155] seq_read_iter+0x3f8/0x1140
[ 33.867173] vfs_read+0x76c/0xc50
[ 33.867198] ksys_read+0xfb/0x1d0
[ 33.867214] do_syscall_64+0x90/0x160
...
[ 33.867353] Allocated by task 378 on cpu 7 at 22.794876s:
[ 33.867358] kasan_save_stack+0x33/0x50
[ 33.867364] kasan_save_track+0x17/0x60
[ 33.867367] __kasan_kmalloc+0x87/0x90
[ 33.867371] vangogh_init_smc_tables+0x3f9/0x840 [amdgpu]
[ 33.867835] smu_sw_init+0xa32/0x1850 [amdgpu]
[ 33.868299] amdgpu_device_init+0x467b/0x8d90 [amdgpu]
[ 33.868733] amdgpu_driver_load_kms+0x19/0xf0 [amdgpu]
[ 33.869167] amdgpu_pci_probe+0x2d6/0xcd0 [amdgpu]
[ 33.869608] local_pci_probe+0xda/0x180
[ 33.869614] pci_device_probe+0x43f/0x6b0
Empirically we can confirm that the former allocates 152 bytes for the
table, while the latter memsets the 168 large block.
Root cause appears that when GPU metrics tables for v2_4 parts were added
it was not considered to enlarge the table to fit.
The fix in this patch is rather "brute force" and perhaps later should be
done in a smarter way, by extracting and consolidating the part version to
size logic to a common helper, instead of brute forcing the largest
possible allocation. Nevertheless, for now this works and fixes the out of
bounds write.
v2:
* Drop impossible v3_0 case. (Mario)
(cherry picked from commit 0880f58f9609f0200483a49429af0f050d281703)
Security readout for executives and security teams
Plain-English summary
A Linux AMD GPU power-management bug allocates 152 bytes for a metrics table but clears 168 bytes, writing beyond allocated kernel memory. On affected Vangogh-based systems, a local low-privileged user may trigger kernel memory corruption, potentially affecting confidentiality, integrity, or availability.
Executive priority
Treat as a high-priority endpoint patching issue, especially for shared or less-trusted Vangogh-based Linux systems. It requires local access, reducing internet-facing urgency, but kernel memory corruption carries serious potential impact. Confirm affected hardware and distribution packages promptly.
Technical view
CVE-2024-50221 is a CWE-787 slab out-of-bounds write in amdgpu’s Vangogh GPU-metrics path. smu_cmn_init_soft_gpu_metrics() writes 168 bytes into a 152-byte allocation created during Vangogh table initialization. KASAN observed the condition while a user process read GPU metrics through sysfs.
Likely exposure
Exposure is limited to Linux systems using the affected amdgpu Vangogh GPU-metrics code. The supplied record identifies affected Linux releases beginning with 6.6 and names later release boundaries, but its flattened version data does not establish every distribution-specific affected package.
Exploitation context
CVSS 3.1 rates this 7.8: local access, low complexity, low privileges, and no user interaction, with potentially high confidentiality, integrity, and availability impact. The supplied record is not in KEV and provides no evidence of active exploitation or a public exploit.
Researcher notes
The observed path runs from sysfs GPU-metrics reads through vangogh_get_gpu_metrics_v2_4() to the oversized memset. The correction allocates for the largest expected metrics structure. The source calls this a brute-force fix and suggests later consolidating version-to-size logic. No demonstrated privilege escalation or exploitation is provided.
Mitigation direction
Update to a vendor-supported kernel containing one of the cited Linux stable fixes.
Check distribution advisories to confirm the precise fixed package for each deployed kernel branch.
Prioritize Vangogh-based endpoints where untrusted or lower-privileged users can run local processes.
If updates are delayed, follow vendor guidance for limiting exposure to the affected amdgpu metrics path.
Validation and detection
Inventory kernel versions and identify systems loading amdgpu on Vangogh-class hardware.
Compare installed distribution packages against vendor advisories and the cited stable fix commits.
Confirm the deployed kernel source or package includes the applicable upstream correction.
After updating, verify normal GPU metrics access and review kernel logs for memory-safety warnings.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-787: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
2CVSS vectors
3Timeline events
1ADP providers
4Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: noTechnical Impact: total
CVSS vector scores
2 official scores
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-787 · source CWE mapping
Out-of-bounds Write
Out-of-bounds Write represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.