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.
https://git.kernel.org/stable/c/c2130f6553f4a5cbdc259de069600117a995f197
https://git.kernel.org/stable/c/8c5de0d8ab6824cfdadcbbe1be4c6c9d9f4c1f80
https://git.kernel.org/stable/c/4c6e64cae2b2dab32ad9099faa339f6a72c0ce16
https://git.kernel.org/stable/c/29b916d3556bd12a95be7c56ca391b8cd572f8be
https://git.kernel.org/stable/c/1842d45f461a78988254631893329bdf4596e954