CVE-2026-46025

Orta

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: mm/damon/core: damon_call() və kdamond_fn() arasındakı çıxış yarışının (exit race) düzəldilməsi "mm/damon/core: fix damon_call()/damos_walk() vs kdmond exit race" yamaları seriyası. damon_call() və damos_walk() funksiyaları kdamond sonlandırmaları ilə yarışdıqda yaddaş sızmasına və ya ölü kilidlənməsinə (deadlock) səbəb ola bilər. Bunlar düzəldildi. Bu yama (2-dən biri); kdamond_fn() əsas dövrü başa çatdıqda, funksiya bütün qalan damon_call() sorğularını ləğv edir və API çağıranlarının və API funksiyalarının kontekstin sonlandırıldığını bilməsi üçün damon_ctx->kdamond dəyişənini sıfırlayır. damon_call() əvvəlcə çağıranın sorğusunu növbəyə əlavə edir. Bundan sonra, damon_ctx-in kdamond-unun hələ də işləyib-işləmədiyini (damon_ctx->kdamond təyin edilibmi) yoxlayır. Yalnız kdamond işləyirsə, damon_call() yeni əlavə edilmiş sorğunun kdamond tərəfindən emal edilməsini gözləməyə başlayır. Lakin damon_call() sorğularının qeydiyyatı və damon_ctx->kdamond sıfırlanması fərqli mutekslər (mutex) ilə qorunur. Buna görə də, damon_call() damon_ctx->kdamond sıfırlanması ilə yarışa girə bilər və bu, ölü kilidlənmələrə gətirib çıxara bilər. Məsələn, fərz edək ki, kdamond damon_call() sorğularının ləğvini uğurla tamamladı. Dərhal sonra həmin kontekst üçün damon_call() çağırılır. O, yeni sorğunu qeydiyyata alır və damon_ctx->kdamond sıfırlanması hələ tamamlanmadığı üçün kontekstin hələ də işlədiyini görür. Beləliklə, damon_call() çağıranı sorğunun emal olunmasını gözləməyə başlayır. Lakin kdamond artıq sonlandırma mərhələsindədir, buna görə də o, yeni sorğunu heç vaxt emal etmir. Nəticədə, damon_call() çağıran axınlar sonsuz müddət gözləyir. Bunu, call_controls_obsolete adlı yeni bir damon_ctx sahəsi tətbiq etməklə düzəldin. Bu sahə damon_call() sorğularının qeydiyyatını qoruyan damon_ctx->call_controls_lock ilə qorunur. Onu damon_start() geri dönməzdən əvvəl kdamond_fn()-də ilkinləşdirin (sıfırlayın) və qalan damon_call() sorğularının ləğvi icra edilməzdən dərhal əvvəl təyin edin. damon_call() kilid altında obsolete sahəsini oxuyur və yeni sorğu əlavə etməkdən qaçır. Bu dəyişiklikdən sonra yalnız emal ediləcəyi və ya ləğv ediləcəyi zəmanət verilən sorğular qeydiyyata alınır. Buna görə də, qeydiyyatdan sonrakı DAMON kontekstinin sonlandırılma yoxlamasına artıq ehtiyac qalmadı. Onu da birlikdə silin. Qeyd edək ki, damon_call() təkrar rejimli (repeat mode) sorğu üçün çağırıldıqda ölü kilidlənmə baş verməyəcək. Bu halda, sorğu qeydiyyatı uğurlu olduqda və kdamond-un işlədiyi görünəndə, damon_call() gözləmək əvəzinə geri dönür. Lakin, əgər sorğu həmçinin dealloc_on_cancel parametrini daşıyırsa, sorğu yaddaşı sızacaqdır. Problem sashiko [1] tərəfindən aşkar edilmişdir.

CiddilikOrta
CVSS4.7
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc27 may 2026
İlk görülmə27 may 2026

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.18.27, 7.0.4 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel6.14 ≤ v < 6.18.27, 6.19 ≤ v < 7.0.46.18.27, 7.0.4

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.

Intelligence 360 paketində

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.

CVE-2026-46025 · Linux Kernel · Dark Radar