CVE-2026-74276
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: spi: xilinx: bufer ölçüsünü müəyyən etmək üçün FIFO tutumu registrindən istifadə edin Drayverin FIFO ölçüsünü müəyyən etmək üçün istifadə etdiyi metodda problem var. Hazırkı işləmə prinsipi belədir: O, SPI aparatını dayandırır və status registrinə TX FIFO FULL təsdiqlənənə qədər TX FIFO registrinə yazır. Lakin aparatın yalnız FIFO-su yox, həm də bir baytı saxlaya bilən sürüşmə registri (shift register) var. Bu, FIFO-ya bir bayt yazıldıqda (SPI aparatı dayandırılmış halda), TX FIFO EMPTY-nin hələ də boş olduğu zaman görünür. Beləliklə, məsələn, FIFO ölçüsü 16-dırsa, hazırki metod 17 qaytarır. Bu, xüsusilə drayver irq rejimində istifadə edildikdə problem yaradır. TX FIFO üçün müəyyən edilmiş eyni ölçü RX FIFO üçün də qəbul edilir. Bir SPI tranzaksiyası FIFO ölçüsü qədər və ya daha çox bayt yazmaq istədikdə, məsələn, 16 baytlıq FIFO ölçüsü ilə aşağıdakılar baş verir: Drayver SPI aparatını dayandırır, TX FIFO-ya 17 bayt yazır, SPI aparatını başladır və yuxu rejiminə keçir. Aparat daha sonra 17 baytı (FIFO + sürüşmə registri) kənara sürüşdürür və eyni zamanda baytları RX FIFO-ya oxuyur, lakin orada cəmi 16 yer olduğu üçün bir bayt itirilir. Sonra TX FIFO empty təsdiqlənir, drayveri yenidən oyadır, o isə sürətli yol vasitəsilə RX FIFO-dan 16 bayt oxuyur, lakin sonuncu 17-ci baytı (hansı ki, itmişdir) oxumazdan əvvəl bunu edir: sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); if (!(sr & XSPI_SR_RX_EMPTY_MASK)) { xilinx_spi_rx(xspi); rx_words--; } O, status registrini oxuyur və RX FIFO-nun boş olub-olmadığını yoxlayır. Lakin bizim nümunədə o, boşdur. Buna görə də bu yoxlama while dövründə sonsuz fırlanaraq drayveri bloklayır. Bu yamama FIFO ölçüsünün müəyyən edilməsi məntiqini düzəldir.
Necə düzəltmək olar
- Linux Linux4ee65558a7fda463222f5edc631b6d7862218725, e98f589d54068dfcc7da42d9b730e47b84e2991a, 1fc6a6c0cc7796b0c1cf4eec3f0720f422f09273, dfab0d4698a642bab9b895e2e6d240838cfe2cc6, d7ccd8736b67550eca746ed7fa39a36016ff114b, 1c9246a199e19b2fd36e94feed60e55f27103a4f, d1944b71c18e7494756bff1a6f80c25be99eaecb, 47f3b5365536e8c38f264824ab15fdb74454e066 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < 4ee65558a7fda463222f5edc631b6d7862218725, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < e98f589d54068dfcc7da42d9b730e47b84e2991a, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < 1fc6a6c0cc7796b0c1cf4eec3f0720f422f09273, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < dfab0d4698a642bab9b895e2e6d240838cfe2cc6, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < d7ccd8736b67550eca746ed7fa39a36016ff114b, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < 1c9246a199e19b2fd36e94feed60e55f27103a4f, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < d1944b71c18e7494756bff1a6f80c25be99eaecb, 4c9a761402d780b86b9b068aba4ef8e29ed15e99 ≤ v < 47f3b5365536e8c38f264824ab15fdb74454e066, 4.0 | 4ee65558a7fda463222f5edc631b6d7862218725, e98f589d54068dfcc7da42d9b730e47b84e2991a, 1fc6a6c0cc7796b0c1cf4eec3f0720f422f09273, dfab0d4698a642bab9b895e2e6d240838cfe2cc6, d7ccd8736b67550eca746ed7fa39a36016ff114b, 1c9246a199e19b2fd36e94feed60e55f27103a4f, d1944b71c18e7494756bff1a6f80c25be99eaecb, 47f3b5365536e8c38f264824ab15fdb74454e066 |
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.