CVE-2026-68436 in Linux
要約
〜によって VulDB • 2026年08月12日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
drm/amd/display: struct dc の割り当てに kvzalloc を使用する
struct dc は時間の経過とともに肥大化しており(その大部分はインライン展開された 2 つの dc_scratch_space コピーによるもの)、現在ページアロケータの連続メモリ確保制限である 4 MiB に近づいています。実際のサイズはソースコードのみで決まるわけではなく、コンパイラや .config の設定にも依存するため、新しい GCC や構成変更などにより容易に 4 MiB を超えることがあります。
dc_create() は kzalloc() でこれを割り当てています。struct dc が 4 MiB を超えると、要求は order 11 (8 MiB) に切り上げられますが、これは MAX_PAGE_ORDER より大きいため、ページアロケータは警告を発し NULL を返します。その後 dc_create() は失敗し、DM の初期化も失敗して amdgpu プローブが -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+0x2e2/0x4c0 [amdgpu]
dc_create() が NULL を返すと DM の初期化が失敗し、これにより GPU 全体の初期化が中止され、amdgpu プローブは -EINVAL(「hw_init of IP block <dm> failed -22」)で失敗します。その結果、ディスプレイが使えなくなります。クリーンアップ時の後続する amdgpu_irq_put() の警告は、中途半端に初期化されたデバイスの巻き戻しに伴う副次的なものです。
struct dc はソフトウェア専用の管理構造体であり、ハードウェア DMA に渡されることはなく、不透明ポインタとしてのみ保持されます。そのため、物理的に連続したメモリを必要としません。kvzalloc() で割り当て(kvfree() で解放)することで、そのようなサイズの連続確保が利用できない場合にアロケータが vmalloc() にフォールバックでき、MAX_PAGE_ORDER に関する警告も完全に回避できます。
v2: - amd-staging-drm-next にリベースしました。
(cherry picked from commit 991e0516a8072f2292681c6ae98a924ab0e32575)
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.