CVE-2026-98166

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: drm/ttm: dışarı aktarılan (swapped-out) kaynakların bulk_move aralığından hiçbir zaman ayrılmaması sorunu düzeltildi ttm_tt_swapout() fonksiyonu başarı durumunda dışarı aktarılan sayfa sayısını, hata durumunda ise negatif bir hata kodu döndürür; doldurulmuş bir ttm için asla sıfır döndürmez. b2ed01e7ad3d ("drm/ttm: Fix ttm_bo_swapout() infinite LRU walk on swapout failure") numaralı commit, ttm_bo_swapout_cb() içerisindeki bulk_move kayıt tutma işlemini "if (!ret)" altına taşıdı, bu nedenle ttm_resource_del_bulk_move_unevictable() / ttm_resource_move_to_lru_tail() çifti artık her başarılı dışarı aktarma işleminde atlanmaktadır. Shrinker için 1d59f36e95f7 ("drm/ttm: Fix ttm_bo_shrink() infinite LRU walk on backup failure") numaralı commit'teki eşdeğer değişiklik "lret > 0" durumunu test eder ki burada da amaçlanan buydu. b2ed01e7ad3d öncesinde kaynak, dışarı aktarmadan önce bulk_move üzerinden alınıyordu; o zamandan beri dışarı aktarılan bir kaynak, tahliye edilemez (unevictable) olmasına rağmen BO'nun bulk_move aralığında (ve yönetici LRU'da) kalmaya devam etmektedir. Daha sonra serbest bırakıldığında veya BO bulk_move'dan ayrıldığında (amdgpu_vm_bo_del() aracılığıyla ttm_resource_free(), ttm_bo_set_bulk_move()), ttm_resource_del_bulk_move() fonksiyonu !ttm_resource_unevictable() koruması nedeniyle bunu atlar, böylece pos->first / pos->last içindeki bir aralık uç noktası serbest bırakılmış belleği göstermeye devam eder. Bu imleç üzerindeki bir sonraki ttm_lru_bulk_move_tail() veya ttm_resource_add_bulk_move() çağrısı; ttm_lru_bulk_move_add() içindeki resv WARN, ttm_resource_move_to_lru_tail() içindeki "list_del corruption" veya ttm_resource_manager_next() içindeki bir NULL dereference olarak görülen bir serbest bırakıldıktan sonra kullanım (use-after-free) hatasına yol açar -- bu durum hazırda bekletme (hibernation) sonrası dakikalarca veya saatlerce sonra ya da hazırda bekletmeyi takip eden süreç çıkışında / yeniden başlatmada görülür. Samuel Ainsworth'ün drm/amd sorun 5387 analizi (bkz. Bağlantı), sarkan imleci tanımlamıştır; dışarı aktarma sırasında eksik olan kaldırma işlemi bunun sarkma nedenidir. Başarı koşulunun test edilmesi, kaldırma işlemini geri getirir. Backport içeren 7.0.y kararlı çekirdek üzerinde (Ubuntu 7.0.0-31) askıya al ve ardından hazırda beklet (suspend-then-hibernate) işlemi çalıştıran bir AMD Phoenix APU'da (ASUS UM3406GA, gfx1103), hata 18 hazırda bekletme döngüsünün 5'ini çökertmiştir; bir hazırda bekletmenin fonksiyon profili 336 ttm_tt_swapout() çağrısı ve sıfır ttm_resource_del_bulk_move_unevictable() çağrısı göstermiştir. Bu değişiklikle birlikte kaldırma işlemi her dışarı aktarılan kaynak için gerçekleşmiş ve sonraki 12 döngü sorunsuz tamamlanmıştır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın6 Eki 2026
İlk görülme6 Eki 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linuxb48ebe399b4e72baa323462580fdd83ebda561e1, 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 6.18.59, 7.1 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux060f8f3020516d71bc4d6159d4d0beef85606a74 ≤ v < b48ebe399b4e72baa323462580fdd83ebda561e1, b2ed01e7ad3de80333e9b962a44024b094bc0b2b ≤ v < 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, b2ed01e7ad3de80333e9b962a44024b094bc0b2b ≤ v < 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 0124a09e3e5f5f6080efe9663b27af27933f8382, 6.18.57 ≤ v < 6.18.59, 7.0.10 ≤ v < 7.1, 7.1b48ebe399b4e72baa323462580fdd83ebda561e1, 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 6.18.59, 7.1

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.