CVE-2026-98939
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: x86/mm: Serbest bırakırken gereksiz PMD sayfa kopyalamayı kaldır Ayrık bir GPU bulunan sistemlerde, kswapd TTM sayfa havuzunu daralttığında lockdep olası bir deadlock raporlamaktadır. Bunun doğrudan nedeni, çekirdek sayfa koruma düzenleme koduna mmap_read_lock() ekleyen bir x86 commit'idir. Huge vmap kodu, geri kazanım (reclaim) işlemi bu kilidi alabildiği için artık uygun olmayan bir durum olan GFP_KERNEL tahsisi sırasında aynı kilidi tutmaktadır. Bu tahsis, bir sayfa tablosu serbest bırakma yolundadır ve şüpheli amaçlar[1] için yapılmaktadır. Temel olarak, donanımın erişemediği sayfa tablosu girişlerinde Accessed=1 şeklinde işaretleme yapmasını önlemeye çalışmaktadır ki bu bir sorun teşkil etmemektedir. PMD kopyalama işlemi kaldırılmıştır. Orijinal PMD sayfası PUD üzerinden ayrılır, orta seviye önbellekler temizlenir ve PTE tabloları doğrudan ayrılan PMD sayfasından serbest bırakılır. Tahsis işlemi kalmadığından, kilitleme sorunu ortadan kalkmıştır. Lockdep splat/analizi: WARNING: possible circular locking dependency detected 7.3.0-rc3-f6e7b42bf05b+ #183 Tainted: G U ------------------------------------------------------ kswapd0/269 is trying to acquire lock: ((init_mm).mmap_lock){++++}-{4:4}, at: change_page_attr_set_clr+0x29a/0x4a0 but task is already holding lock: (pool_shrink_rwsem){.+.+}-{4:4}, at: ttm_pool_shrink+0xb2/0x330 [ttm] Chain exists of: (init_mm).mmap_lock --> fs_reclaim --> pool_shrink_rwsem Döngü üç kenardan oluşmaktadır: 1) pool_shrink_rwsem -> (init_mm).mmap_lock TTM shrinker, pool_shrink_rwsem kilidini tutarken serbest bıraktığı her sayfanın önbellekleme özniteliğini geri yükler: ttm_pool_shrink() -> ttm_pool_dispose_list() -> ttm_pool_free_page() -> set_pages_wb() -> change_page_attr_set_clr() [ init_mm mmap read lock ] 2) fs_reclaim -> pool_shrink_rwsem Geri kazanım (reclaim) tarafından çağrılan aynı shrinker. 3) (init_mm).mmap_lock -> fs_reclaim Mevcut bir PMD tablosu üzerine devasa bir PUD eşlemesi kuran ioremap(): ioremap_page_range() -> vmap_range_noflush() -> vmap_try_huge_pud() [ init_mm mmap read lock ] -> pud_free_pmd_page() -> __get_free_page(GFP_KERNEL) [ enters reclaim ] [ dhansen: Değişiklik günlüğü üzerinde birçok düzenleme/kırpma yapılmış ve düzeltmenin benim versiyonumdaki yorumlar birleştirilmiştir. ]
Nasıl düzeltilir
- Linux Linuxd3c2d2692bdf4af94bb27bc7a3aa0a348a567606, f38c57a28ebbd057471573e39555d5aa11ab03cf, e3ee38c1bc0b11a8d3e63dce7050759b61864286, 6.18.56, 7.2.10 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | e21a9ea81426a85fdb0cdcfcc99d5d9c16b402ab ≤ v < d3c2d2692bdf4af94bb27bc7a3aa0a348a567606, cc73b2043d106b467accd38e9b1fc09e0607c056 ≤ v < f38c57a28ebbd057471573e39555d5aa11ab03cf, d5d8b8662e6e5a565b47a0388640e88402f23274 ≤ v < e3ee38c1bc0b11a8d3e63dce7050759b61864286, 6.18.53 ≤ v < 6.18.56, 7.2.7 ≤ v < 7.2.10 | d3c2d2692bdf4af94bb27bc7a3aa0a348a567606, f38c57a28ebbd057471573e39555d5aa11ab03cf, e3ee38c1bc0b11a8d3e63dce7050759b61864286, 6.18.56, 7.2.10 |
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.
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.