CVE-2026-74357

Source
https://cve.org/CVERecord?id=CVE-2026-74357
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74357.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-74357
Downstream
Published
2026-08-15T05:58:42.116Z
Modified
2026-08-18T03:56:46.970678871Z
Severity
  • 7.8 (High) CVSS_V3 - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
Summary
drm/amdgpu: fix KASAN slab-out-of-bounds in amdgpu_coredump ring dump
Details

In the Linux kernel, the following vulnerability has been resolved:

drm/amdgpu: fix KASAN slab-out-of-bounds in amdgpu_coredump ring dump

The ring content dump in amdgpu_coredump() uses two separate loops over adev->rings[]: the first counts rings with unsignalled fences to size the allocation, and the second copies ring data into the allocated buffers.

Both loops use the same condition to skip rings:

atomic_read(&ring->fence_drv.last_seq) == ring->fence_drv.sync_seq

Because lastseq is an atomic that is updated concurrently by the fence signalling path, additional rings may appear unsignalled in the second loop that were signalled during the first. When this happens, idx exceeds the allocated ringcount and the store to coredump->rings[idx] writes past the end of the kcalloc-ed buffer.

This was found during IGT stressful test amdqueuereset which triggers random GPU resets. The OVERSIZE subtest (CMDSTREAMEXECINVALIDPACKETLENGTHOVERSIZE on GFX ring) provokes a ring timeout and subsequent coredump, which hits the race between the counting and copying loops. The failure is non-deterministic and depends on fence signalling timing during the reset.

KASAN log:

BUG: KASAN: slab-out-of-bounds in amdgpucoredump+0x1274/0x12f0 [amdgpu] Write of size 4 at addr ffff888106154258 by task kworker/u128:5/23625 CPU: 16 UID: 0 PID: 23625 Comm: kworker/u128:5 Not tainted 6.19.0+ #35 Workqueue: amdgpu-reset-dev drmschedjobtimedout [gpusched] Call Trace: <TASK> dumpstacklvl+0xa5/0x110 printreport+0xd1/0x660 kasan_report+0xf3/0x130 _asanreportstore4noabort+0x17/0x30 amdgpucoredump+0x1274/0x12f0 [amdgpu] amdgpujobtimedout+0xef0/0x16c0 [amdgpu] drmschedjobtimedout+0x194/0x5c0 [gpusched] processonework+0x84b/0x1990 workerthread+0x6b8/0x11b0 </TASK>

Allocated by task 23625: kasansavestack+0x39/0x70 __kasan_kmalloc+0xc3/0xd0 __kmallocnoprof+0x2ec/0x910 amdgpucoredump+0x5c5/0x12f0 [amdgpu] amdgpujobtimedout+0xef0/0x16c0 [amdgpu]

The buggy address belongs to the object at ffff888106154200 which belongs to the cache kmalloc-rnd-09-96 of size 96 The buggy address is located 16 bytes to the right of allocated 72-byte region [ffff888106154200, ffff888106154248)

72 bytes = 3 * sizeof(struct amdgpucoredumpring), so ringcount was 3 but idx reached 3+, writing ringindex (at struct offset 16) 16 bytes past the allocation.

Fix by adding an idx < ring_count guard to the copy loop so it cannot exceed the allocated count even when the fence state changes between the two passes.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74357.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
eea85914d15bfe3bdf9f8f80a479f0dee0aa7d73
Fixed
efb1dadaeb897b22b9e118d398d0f41e70e9ccca
Fixed
08ac3a7879d300302a1927ce2038629539a37f8b

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74357.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
7.1.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74357.json"