CVE-2026-98166
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: drm/ttm: dəyişdirilmiş (swapped-out) resursların öz bulk_move diapazonundan heç vaxt çıxmamasının düzəldilməsi ttm_tt_swapout() uğurlu olduqda dəyişdirilən səhifələrin sayını, xəta baş verdikdə isə mənfi xəta kodunu qaytarır; doldurulmuş ttm üçün o, heç vaxt sıfır qaytarmır. b2ed01e7ad3d ("drm/ttm: Fix ttm_bo_swapout() infinite LRU walk on swapout failure") commit-i ttm_bo_swapout_cb() funksiyasındakı bulk_move uçotunu "if (!ret)" şərtinin altına köçürmüşdür, buna görə də hər uğurlu swapout zamanı ttm_resource_del_bulk_move_unevictable() / ttm_resource_move_to_lru_tail() cütü indi ötürülür. 1d59f36e95f7 ("drm/ttm: Fix ttm_bo_shrink() infinite LRU walk on backup failure") commit-ində shrinker üçün ekvivalent dəyişiklik "lret > 0" şərtini yoxlayır ki, burada da məqsəd elə bu idi. b2ed01e7ad3d commit-indən əvvəl resurs swapout-dan öncə bulk_move-dan çıxarılırdı; bundan sonra isə dəyişdirilmiş resurs, evictable olmasa belə, öz BO-sunun bulk_move diapazonunda (və menecer LRU-da) qalır. Daha sonra o azad edildikdə və ya BO bulk_move-dan çıxdıqda (ttm_resource_free(), amdgpu_vm_bo_del() vasitəsilə ttm_bo_set_bulk_move()), ttm_resource_del_bulk_move() funksiyası !ttm_resource_unevictable() mühafizəsi səbəbindən onu ötürür, nəticədə pos->first / pos->last-dakı diapazon son nöqtəsi azad edilmiş yaddaşa işarə etməyə davam edir. Həmin kursor üzərindəki növbəti ttm_lru_bulk_move_tail() və ya ttm_resource_add_bulk_move() çağırışı use-after-free xətasına səbəb olur; bu, hibernasiyadan dəqiqələr və ya saatlar sonra, yaxud hibernasiyanı izləyən prosesin çıxışı / yenidən yükləmə zamanı ttm_lru_bulk_move_add()-da resv WARN, ttm_resource_move_to_lru_tail()-da "list_del corruption" və ya ttm_resource_manager_next()-da NULL dereference kimi müşahidə olunur. Samuel Ainsworth-ün drm/amd 5387 nömrəli probleminin təhlili (Link-ə baxın) asılı qalan kursoru müəyyən etmişdir; swapout zamanı silinmənin baş verməməsi onun asılı qalmasının səbəbidir. Uğur şərtinin yoxlanılması silinməni bərpa edir. Backport-u daşıyan 7.0.y stabil nüvəsində (Ubuntu 7.0.0-31) suspend-then-hibernate rejimində çalışan AMD Phoenix APU-da (ASUS UM3406GA, gfx1103) bu xəta 18 hibernasiya dövründən 5-ində sistemin çökməsinə səbəb olmuşdur; bir hibernasiyanın funksiya profili 336 ttm_tt_swapout() çağırışını və sıfır ttm_resource_del_bulk_move_unevictable() çağırışını göstərmişdir. Bu dəyişikliklə silinmə hər bir dəyişdirilmiş resurs üçün baş verir və növbəti 12 dövr problemsiz tamamlanmışdır.
Necə düzəltmək olar
- Linux Linuxb48ebe399b4e72baa323462580fdd83ebda561e1, 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 6.18.59, 7.1 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 060f8f3020516d71bc4d6159d4d0beef85606a74 ≤ v < b48ebe399b4e72baa323462580fdd83ebda561e1, b2ed01e7ad3de80333e9b962a44024b094bc0b2b ≤ v < 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, b2ed01e7ad3de80333e9b962a44024b094bc0b2b ≤ v < 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 0124a09e3e5f5f6080efe9663b27af27933f8382, 6.18.57 ≤ v < 6.18.59, 7.0.10 ≤ v < 7.1, 7.1 | b48ebe399b4e72baa323462580fdd83ebda561e1, 1169fe8c11ca45e3f91d59a73eb271d0ca8a7fb0, 3db7d7d583419f7b1f2e141e36418802dbb25cf8, 6.18.59, 7.1 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.