CVE-2026-99000

Belirsiz

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: drm/xe: İç içe geçmiş harici pinlerde shrinker muhasebesi çift çıkarma hatası düzeltildi xe_bo_pin_external() ve xe_bo_unpin_external() fonksiyonları, temelindeki ttm_bo_pin()/ttm_bo_unpin() işlemleri bir boolean yerine pin_count referans sayacı tuttuğu için iç içe geçmiş pinleri destekler. Ancak, shrinker muhasebe çağrıları olan xe_ttm_tt_account_subtract() ve xe_ttm_tt_account_add(), yalnızca sabitlenmiş duruma geçişte ve bu durumdan çıkışta çağrılmak yerine, her pin_external()/unpin_external() çağrısında koşulsuz olarak yürütülmektedir. Harici bir BO (dma-buf), örneğin birden fazla eki/ithalatçısı olduğunda ve her biri bağımsız olarak xe_bo_pin_external() çağırdığında, zaten sabitlenmişken birden fazla kez sabitlenebilir. Bu tür her iç içe geçmiş pin, BO sayfaları ilk pinleme işlemiyle zaten değerlendirme dışı bırakılmış olsa bile, bunları shrinker muhasebesinden tekrar çıkarır. Simetrik olarak, her iç içe geçmiş unpin işlemi, BO gerçek anlamda serbest bırakılmadan önce onları tekrar ekler. Bu durum, shrinker'ın sayfa ve nesne sayılarını gerçeklikle senkronize olmaktan çıkarır ve bunlar signed long olarak tanımlanıp xe_shrinker_count() içinde unsigned long olarak yorumlandığından, alt taşma (underflow) devasa bir daraltılabilir/temizlenebilir sayfa sayısına dönüşebilir; bu da bellek baskısı altında shrinker'ın aşırı derecede çağrılmasına neden olur. Muhasebe çağrılarını, pinned_link listesi bakımını korumak için halihazırda kullanılan aynı pin-sayacı geçiş kontrolleriyle koruyarak, muhasebenin yalnızca en dıştaki pinlemede ve son unpinlemede güncellenmesi sağlandı. Bu mantık xe_bo_account_pin()/xe_bo_account_unpin() fonksiyonlarında merkezileştirilirken, ithal edilen dma-buf'ları etkileyen ikinci ve ilgili bir muhasebe boşluğu da kapatılmıştır. İthal edilmiş bir bo'nun ttm_tt'si için xe'nin ttm_tt_populate kancası (xe_ttm_tt_populate()), TTM_TT_FLAG_EXTERNAL ayarlı ancak TTM_TT_FLAG_EXTERNAL_MAPPABLE ayarsız olduğu için xe_ttm_tt_account_add() çağrısını yapmadan erken döner. Bununla birlikte, TTM çekirdeğinin ttm_tt_populate() sarmalayıcısı, sürücü kancası başarılı olduğunda tt'yi koşulsuz olarak doldurulmuş şeklinde işaretler, dolayısıyla ttm_tt_is_populated() hala doğru raporlar. xe_bo_account_pin()/xe_bo_account_unpin(), ttm_tt_is_populated() fonksiyonuna "bu sayfalar shrinker tarafından hesaplanmıştır" ifadesinin bir vekili olarak güveniyordu ve başlangıçta hiç eklenmemiş olan böyle bir tt için sayfaları çıkaracak/ekleyecekti, bu da shrinker sayımlarında yeniden alt taşmaya yol açacaktı. Buna şu anda xe_bo_pin_external() üzerinden erişilebilir ve bu yama aşağıda __xe_pin_fb_vma()'yı xe_bo_pin_account() üzerinden yönlendirdiğinde fb-pin yoluyla yeni bir erişim noktası oluşacaktı; bu nedenle, bu serideki bir commit'in sorunu çözmeden önce regresyona neden olmasını önlemek için bu hata daha sonraki bir yamada değil burada düzeltilmiştir. Yeni bir xe_ttm_bo_is_imported() yardımcı fonksiyonu aracılığıyla, xe_ttm_tt_populate()/xe_ttm_tt_unpopulate() işlemlerinin karar vermek için kullandığı aynı EXTERNAL && !EXTERNAL_MAPPABLE testi kullanılarak ithal edilen bo'lar için muhasebe işlemi atlanmıştır. v2: - Sashiko AI incelemesinde tespit edilen kritik sorun düzeltildi: Burada getirilen pin-sayacı geçiş kontrolü, fb-pin yolu (__xe_pin_fb_vma()/__xe_unpin_fb_vma()) tarafından hala baypas ediliyordu; bu durum, fb-unpin gerçek son unpin işlemini gerçekleştirdiğinde eski bir pinned_link girdisi ve kalıcı bir shrinker muhasebe sızıntısı bırakabilirdi. Kendi Fixes: etiketine sahip ayrı bir hata olduğu için buraya dahil edilmek yerine bu serideki ayrı bir takip yamasında ele alınmıştır. - xe_bo_unpin_external() içindeki gereksiz yerel "last_unpin" değişkeni kaldırılarak orijinal satır içi bo->ttm.pin_count == 1 kontrolü geri getirildi; bu, yeni muhasebe yardımcıları tarafından kullanılmayan işlevsiz bir yeniden adlandırmaydı ve zaten takip yamasıyla silinecekti. v3: - İthal edilen dma-buf'lar pin/unpin shrinker muhasebesinden hariç tutularak Sashiko AI incelemesinde yakalanan başka bir alt taşma hatası düzeltildi. - Yedek nesne (backup-object) pinleme noktasına, pinleme sırasında zaten doldurulduğunu/hesaplandığını belirten kısa bir yorum eklendi; böylece Sashiko AI tarafından tespit edilen orta seviyeli bir muhasebe sızıntısı endişesi (kod düzeltmesine gerek olmayan yanlış pozitif bir açıklama olarak) giderildi.

ÖnemBelirsiz
CVSS—
İstismar olasılığı7. yüzdelik%0,2
ÜrünLinux
Yayın23 Eki 2026
İlk görülme23 Eki 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linux993c952e6832ad0aa4be82e11f0760b1f532090a, ab39bc55cf08208b8511b1c09926b1b646a8befc, 83d5acca1f4f6132038ea88c72c5844f62e42d44 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux00c8efc3180f0cf919b53980e969430657e01685 ≤ v < 993c952e6832ad0aa4be82e11f0760b1f532090a, 00c8efc3180f0cf919b53980e969430657e01685 ≤ v < ab39bc55cf08208b8511b1c09926b1b646a8befc, 00c8efc3180f0cf919b53980e969430657e01685 ≤ v < 83d5acca1f4f6132038ea88c72c5844f62e42d44, 6.15993c952e6832ad0aa4be82e11f0760b1f532090a, ab39bc55cf08208b8511b1c09926b1b646a8befc, 83d5acca1f4f6132038ea88c72c5844f62e42d44

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.

CVE-2026-99000 · Linux · Dark Radar