Description
In the Linux kernel, the following vulnerability has been resolved: net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain The NDP traversal in mhi_mbim_rx() only stops when wNextNdpIndex is zero. Nothing requires the offsets to advance, so a modem that points an NDP at itself, or at an earlier NDP, keeps the loop spinning forever on one CPU. Break out when the next NDP offset is not larger than the current one. Verified in a QEMU guest with a fault injector feeding the driver's receive callback an NTB whose single NDP points at itself: the unpatched driver spins in mhi_mbim_rx() with one CPU pinned at 100% and the thread never returns. With this check the loop terminates within one iteration. Changes in v2: move the non-increasing check to the wNextNdpIndex retrieval site, as suggested by Loic Poulain, instead of tracking the previous offset in a separate variable.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
aa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 3ed36ee1b29b028f6bc2ebe100152f61a33df05aaffectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526affectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 19b5e8dd884a530d04482e1a8e547f43cad17ed7affectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 24ade82d6d993274e99c2c6998848751c35292e7affectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 8dad70ff7e25cbcfbcb5101fdbf36d98003eb653affectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 829fec45122da58d77a55a3b7ca514dafab98e77affectedaa730a9905b7b079ef2fffdab7f15dbb842f5c7c to < 5d063822ac5184939c1ed377a339a01d8ae814e8affected
Linux Linux
Default version status: affected
5.15affected0 to < 5.15unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.54 to ≤ 6.18.*unaffected7.2.8 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/3ed36ee1b29b028f6bc2ebe100152f61a33df05a ↗
- https://git.kernel.org/stable/c/e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526 ↗
- https://git.kernel.org/stable/c/19b5e8dd884a530d04482e1a8e547f43cad17ed7 ↗
- https://git.kernel.org/stable/c/24ade82d6d993274e99c2c6998848751c35292e7 ↗
- https://git.kernel.org/stable/c/8dad70ff7e25cbcfbcb5101fdbf36d98003eb653 ↗
- https://git.kernel.org/stable/c/829fec45122da58d77a55a3b7ca514dafab98e77 ↗
- https://git.kernel.org/stable/c/5d063822ac5184939c1ed377a339a01d8ae814e8 ↗