Description
In the Linux kernel, the following vulnerability has been resolved: cpuidle: Skip governor when only one idle state is available On certain platforms (PowerNV systems without a power-mgt DT node), cpuidle may register only a single idle state. In cases where that single state is a polling state (state 0), the ladder governor may incorrectly treat state 1 as the first usable state and pass an out-of-bounds index. This can lead to a NULL enter callback being invoked, ultimately resulting in a system crash. [ 13.342636] cpuidle-powernv : Only Snooze is available [ 13.351854] Faulting instruction address: 0x00000000 [ 13.376489] NIP [0000000000000000] 0x0 [ 13.378351] LR [c000000001e01974] cpuidle_enter_state+0x2c4/0x668 Fix this by adding a bail-out in cpuidle_select() that returns state 0 directly when state_count <= 1, bypassing the governor and keeping the tick running.
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
dc2251bf98c66db3f4e055b751968f0871037ae4 to < a0f7e804edc82e513d1ccb7c95ed8b351522ec81affecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < 5d103a38e2ae96eca57fd17161bcd29bd4622d1caffecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < 4da2b897283c39980d6ae09dc1560fcd937879e5affecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < 5c577ac939bca486cb02069505cfe47a5312ce02affecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < 8f6833d919bae915ead6c599a53e81e19b32da52affecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < 63ae78336f40bcd9a44952a7c6bafb9c88a8effdaffecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < a0724e40a58a0e323c59707edeae5b71d15800dcaffecteddc2251bf98c66db3f4e055b751968f0871037ae4 to < e5c9ffc6ae1bcdb1062527d611043681ac301acaaffected
Linux Linux
Default version status: affected
4.14affected0 to < 4.14unaffected5.10.252 to ≤ 5.10.*unaffected5.15.202 to ≤ 5.15.*unaffected6.1.165 to ≤ 6.1.*unaffected6.6.128 to ≤ 6.6.*unaffected6.12.75 to ≤ 6.12.*unaffected6.18.14 to ≤ 6.18.*unaffected6.19.4 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/a0f7e804edc82e513d1ccb7c95ed8b351522ec81 ↗
- https://git.kernel.org/stable/c/5d103a38e2ae96eca57fd17161bcd29bd4622d1c ↗
- https://git.kernel.org/stable/c/4da2b897283c39980d6ae09dc1560fcd937879e5 ↗
- https://git.kernel.org/stable/c/5c577ac939bca486cb02069505cfe47a5312ce02 ↗
- https://git.kernel.org/stable/c/8f6833d919bae915ead6c599a53e81e19b32da52 ↗
- https://git.kernel.org/stable/c/63ae78336f40bcd9a44952a7c6bafb9c88a8effd ↗
- https://git.kernel.org/stable/c/a0724e40a58a0e323c59707edeae5b71d15800dc ↗
- https://git.kernel.org/stable/c/e5c9ffc6ae1bcdb1062527d611043681ac301aca ↗