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

drm/amd/display: use kvzalloc to allocate struct dc

struct dc has grown large over time (most of it the two inlined
dc_scratch_space copies) and now sits close to the page allocator's 4 MiB
contiguous allocation limit. Its actual size is not fixed by the source
alone, it also depends on the compiler and the .config, so it can easily
cross 4 MiB, e.g. with a newer GCC or a config change.

dc_create() allocates it with kzalloc(). Once struct dc exceeds 4 MiB the
request is rounded up to order 11 (8 MiB), which is above MAX_PAGE_ORDER,
so the page allocator warns and returns NULL. dc_create() then fails, DM
init fails and amdgpu probe aborts with -EINVAL:

WARNING: mm/page_alloc.c:5197 at __alloc_frozen_pages_noprof+0x2f9/0x380
dc_create+0x38/0x660 [amdgpu]
amdgpu_dm_init+0x2d9/0x510 [amdgpu]
dm_hw_init+0x1b/0x90 [amdgpu]
amdgpu_device_init.cold+0x150d/0x1e13 [amdgpu]
amdgpu_driver_load_kms+0x19/0x80 [amdgpu]
amdgpu_pci_probe+0x1e2/0x4c0 [amdgpu]

dc_create() then returns NULL and DM init fails, which aborts the whole
GPU init and makes amdgpu probe fail with -EINVAL ("hw_init of IP block
<dm> failed -22"), leaving the display unusable. The subsequent
amdgpu_irq_put() warnings during teardown are just fallout of unwinding
a half-initialized device.

struct dc is a software-only bookkeeping structure that is never handed
to hardware DMA and is only ever kept as an opaque pointer, so it does
not require physically contiguous memory. Allocate it with kvzalloc()
(and free it with kvfree()) so that the allocator can fall back to
vmalloc() when a contiguous allocation of that size is not available,
which also avoids the MAX_PAGE_ORDER warning entirely.

v2:
- Rebase to amd-staging-drm-next.

(cherry picked from commit 991e0516a8072f2292681c6ae98a924ab0e32575)
Published: 2026-08-12
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In the AMDGPU driver for Linux, the internal display controller structure (struct dc) has grown large enough that allocating it with kzalloc requires a contiguous block that exceeds the page allocator’s 4 MiB limit. The allocator rounds the request to an 8 MiB contiguous region, which exceeds MAX_PAGE_ORDER and returns NULL. Because the driver does not correctly handle this failure, GPU initialization aborts, rendering the display subsystem unusable. This flaw typifies an out‑of resources condition (CWE-770) and, while it does not enable code execution or information disclosure, it can be triggered by normal driver activity and results in a local denial of service.

Affected Systems

Any Linux kernel that includes the default AMDGPU driver and compiles with a configuration where struct dc can grow beyond 4 MiB is affected. Since the patch that switches to kvzalloc is present only in recent upstream releases, typically all mainstream kernel builds shipped in the past few years may be susceptible if their build configuration allows the structure to exceed the threshold.

Risk and Exploitability

The vulnerability has a CVSS score of 5.5, indicating medium severity, and an EPSS score of less than 1 %, pointing to a very low likelihood of exploitation. It is not listed in CISA’s KEV catalog, and it requires local access to the system and the GPU to trigger. When activated, it causes a denial of service for display output, without providing privilege escalation or data compromise. The overall risk is therefore considered low to moderate, primarily affecting the user experience rather than system security.

Generated by OpenCVE AI on August 13, 2026 at 18:19 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kvzalloc patch (commit 991e0516a8072f2292681c6ae98a924ab0e32575) to replace kzalloc and fix the unsafe allocation logic.
  • Upgrade to a kernel version that includes the fix; recent stable releases contain the kvzalloc change.
  • If a kernel upgrade is not feasible, temporarily disable the amdgpu driver or use a legacy Radeon driver to avoid the allocation failure until the patch is applied.

Generated by OpenCVE AI on August 13, 2026 at 18:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 13 Aug 2026 15:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-122
CWE-674

Thu, 13 Aug 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-770
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Low


Wed, 12 Aug 2026 16:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-122
CWE-674

Wed, 12 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: use kvzalloc to allocate struct dc struct dc has grown large over time (most of it the two inlined dc_scratch_space copies) and now sits close to the page allocator's 4 MiB contiguous allocation limit. Its actual size is not fixed by the source alone, it also depends on the compiler and the .config, so it can easily cross 4 MiB, e.g. with a newer GCC or a config change. dc_create() allocates it with kzalloc(). Once struct dc exceeds 4 MiB the request is rounded up to order 11 (8 MiB), which is above MAX_PAGE_ORDER, so the page allocator warns and returns NULL. dc_create() then fails, DM init fails and amdgpu probe aborts with -EINVAL: WARNING: mm/page_alloc.c:5197 at __alloc_frozen_pages_noprof+0x2f9/0x380 dc_create+0x38/0x660 [amdgpu] amdgpu_dm_init+0x2d9/0x510 [amdgpu] dm_hw_init+0x1b/0x90 [amdgpu] amdgpu_device_init.cold+0x150d/0x1e13 [amdgpu] amdgpu_driver_load_kms+0x19/0x80 [amdgpu] amdgpu_pci_probe+0x1e2/0x4c0 [amdgpu] dc_create() then returns NULL and DM init fails, which aborts the whole GPU init and makes amdgpu probe fail with -EINVAL ("hw_init of IP block <dm> failed -22"), leaving the display unusable. The subsequent amdgpu_irq_put() warnings during teardown are just fallout of unwinding a half-initialized device. struct dc is a software-only bookkeeping structure that is never handed to hardware DMA and is only ever kept as an opaque pointer, so it does not require physically contiguous memory. Allocate it with kvzalloc() (and free it with kvfree()) so that the allocator can fall back to vmalloc() when a contiguous allocation of that size is not available, which also avoids the MAX_PAGE_ORDER warning entirely. v2: - Rebase to amd-staging-drm-next. (cherry picked from commit 991e0516a8072f2292681c6ae98a924ab0e32575)
Title drm/amd/display: use kvzalloc to allocate struct dc
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-18T06:56:03.101Z

Reserved: 2026-07-30T09:28:09.394Z

Link: CVE-2026-68436

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-12T00:17:43.757

Modified: 2026-08-18T07:16:52.097

Link: CVE-2026-68436

cve-icon Redhat

Severity : Low

Publid Date: 2026-08-12T00:00:00Z

Links: CVE-2026-68436 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T18:30:16Z

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling