VYPR
Unrated severityNVD Advisory· Published May 28, 2026

CVE-2026-46229

CVE-2026-46229

Description

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

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

KFD VRAM allocations set AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE but not AMDGPU_GEM_CREATE_VRAM_CLEARED, leaving freshly allocated VRAM with stale data from prior use observable by compute kernels.

The GEM ioctl path already sets VRAM_CLEARED for all userspace allocations via amdgpu_gem_create_ioctl() and amdgpu_mode_dumb_create(). The KFD path was missing this flag, allowing stale page table remnants to leak into user buffers.

This causes crashes in RCCL P2P transport where non-zero data in ptrExchange/head/tail fields corrupts the protocol handshake.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A missing flag in Linux kernel's amdkfd driver leaves VRAM allocations uninitialized, exposing stale data from prior users.

Vulnerability

The Linux kernel's amdkfd driver, present in all versions before the fix, allocates VRAM without setting AMDGPU_GEM_CREATE_VRAM_CLEARED. While the AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE flag is set, freshly allocated buffers are not cleared, leaving stale data from previous users visible to compute kernels. Affected kernels are those prior to commit 1db431380879 [1].

Exploitation

An attacker with the ability to submit compute workloads to a KFD device can allocate VRAM and read uninitialized memory. No special privileges beyond standard user access to the /dev/kfd device and a compatible GPU are required. By repeatedly allocating VRAM and examining its content, the attacker can extract sensitive data left by earlier allocations (e.g., page table entries, encryption keys, or application secrets) without triggering any explicit access violation [1].

Impact

Successful exploitation leads to information disclosure of sensitive kernel or user data that was previously stored in VRAM. In the case of RCCL P2P transport, corrupt protocol handshakes can cause crashes, but the primary security impact is confidentiality breach. The attacker gains no code execution or privilege escalation directly, but exposed data could aid in further system compromise [1].

Mitigation

The fix is included in kernel commits merged as of the patch date, with commit 1db431380879 resolving the issue. All users should update to a kernel containing this patch. No known workaround exists; the missing flag must be set in the allocation path. The CVE is not listed on CISA's Known Exploited Vulnerabilities catalog as of publication [1].

AI Insight generated on May 28, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

10
ad52d61d8218

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitAmir ShetaiaApr 10, 2026Fixed in 7.1-rc1via kernel-cna
2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
77d0b5d11387

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitAmir ShetaiaApr 10, 2026Fixed in 6.18.32via kernel-cna
2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index d3f541d3108c5e..0ab85d0a6a43e2 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1717,7 +1717,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index d3f541d3108c5e..0ab85d0a6a43e2 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1717,7 +1717,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
1db431380879

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitAmir ShetaiaApr 10, 2026Fixed in 6.6.140via kernel-cna
2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index b2d86ffc626cb7..9c0e4e4bf3f614 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1665,7 +1665,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     		}
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index b2d86ffc626cb7..9c0e4e4bf3f614 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1665,7 +1665,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     		}
    -- 
    cgit 1.3-korg
    
    
    
32b153658f01

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitAmir ShetaiaApr 10, 2026Fixed in 6.12.90via kernel-cna
2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 667ab2bfc8aae8..3ae884b81aec6a 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1737,7 +1737,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 667ab2bfc8aae8..3ae884b81aec6a 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1737,7 +1737,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
047d44d8d29a

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitAmir ShetaiaApr 10, 2026Fixed in 7.0.9via kernel-cna
2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
047d44d8d29a

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
32b153658f01

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 667ab2bfc8aae8..3ae884b81aec6a 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1737,7 +1737,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 667ab2bfc8aae8..3ae884b81aec6a 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1737,7 +1737,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
ad52d61d8218

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index 29b400cdd6d5f9..72a5a29e63f6da 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
1db431380879

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index b2d86ffc626cb7..9c0e4e4bf3f614 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1665,7 +1665,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     		}
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index b2d86ffc626cb7..9c0e4e4bf3f614 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1665,7 +1665,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     		}
    -- 
    cgit 1.3-korg
    
    
    
77d0b5d11387

drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

2 files changed · +4 4
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index d3f541d3108c5e..0ab85d0a6a43e2 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1717,7 +1717,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c+2 2 modified
    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    index d3f541d3108c5e..0ab85d0a6a43e2 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
    @@ -1717,7 +1717,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
     			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
     			alloc_flags = 0;
     		} else {
    -			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
    +			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
    +				AMDGPU_GEM_CREATE_VRAM_CLEARED;
     			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
     			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
     
    -- 
    cgit 1.3-korg
    
    
    

Vulnerability mechanics

Root cause

"Missing AMDGPU_GEM_CREATE_VRAM_CLEARED flag in KFD VRAM allocation path causes freshly allocated VRAM to retain stale data from prior use."

Attack vector

An attacker with access to the KFD (Kernel Fusion Driver) compute interface can allocate VRAM through the KFD path and then read the freshly allocated buffer with a compute kernel. Because the allocation lacked `AMDGPU_GEM_CREATE_VRAM_CLEARED`, the VRAM pages are not zeroed on allocation, so stale data from prior GPU workloads — including page table remnants — remains visible in the new buffer [patch_id=2897587]. This information disclosure can be triggered without special privileges beyond the ability to submit KFD memory allocation requests.

Affected code

The vulnerability is in `drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c` in the function `amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()` [patch_id=2897587]. The KFD VRAM allocation path set `AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE` but omitted `AMDGPU_GEM_CREATE_VRAM_CLEARED`, unlike the GEM ioctl path which already sets both flags via `amdgpu_gem_create_ioctl()` and `amdgpu_mode_dumb_create()`.

What the fix does

The patch adds `AMDGPU_GEM_CREATE_VRAM_CLEARED` to the `alloc_flags` bitmask in the KFD VRAM allocation path, alongside the already-set `AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE` [patch_id=2897587]. This ensures that freshly allocated VRAM pages are zeroed before being made accessible to userspace, matching the behavior of the GEM ioctl path. The fix closes the information disclosure by guaranteeing that stale data from prior allocations cannot be observed in new KFD VRAM buffers.

Preconditions

  • authAttacker must have access to the KFD (Kernel Fusion Driver) interface to allocate VRAM
  • configThe system must have an AMD GPU with VRAM managed by amdgpu/amdkfd

Generated on May 28, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.