В ядре Linux устранена следующая уязвимость:
ata: sata_dwc_460ex: исправлен бесконечный цикл при побитовом сканировании завершения тега NCQ. Ручной цикл сканирования битов в пути завершения NCQ имеет
ошибка бесконечного цикла. Когда в tag_mask установлены только старшие биты (например,
0x80000000), внутренний цикл while сдвигает tag_mask влево до тех пор, пока
переполняется до 0.
В этот момент !(0 и 1) всегда истинно и 0 <<= 1
остается 0, вызывая бесконечный цикл в контексте HardIRQ со спин-блокировкой
проведено. Замените побитовое сканирование с открытым кодом на __ffs(), что правильно
находит младший значащий бит набора и ограничивается шириной
аргумент.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ata: sata_dwc_460ex: fix infinite loop in NCQ tag completion bit-scanning The hand-rolled bit-scanning loop in the NCQ completion path has an infinite loop bug. When tag_mask has only high bits set (e.g. 0x80000000), the inner while loop left-shifts tag_mask until it overflows to 0. At that point !(0 & 1) is always true and 0 <<= 1 stays 0, causing an infinite loop in hardirq context with a spinlock held. Replace the open-coded bit-scanning with __ffs() which correctly finds the least significant set bit and is bounded by the width of the argument.
Уязвимые продукты 5
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.36
|
6.6.148
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.36
|
6.12.101
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.36
|
6.18.42
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.36
|
7.1.6
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.36
|
7.2-rc4
|