]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ACPI: processor: idle: Add missing bounds check in flatten_lpi_states()
authorJingkai Tan <contact@jingk.ai>
Thu, 5 Mar 2026 21:38:31 +0000 (21:38 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 9 Mar 2026 18:52:00 +0000 (19:52 +0100)
The inner loop in flatten_lpi_states() that combines composite LPI
states can increment flat_state_cnt multiple times within the loop.

The condition that guards this (checks bounds against ACPI_PROCESSOR
_MAX_POWER) occurs at the top of the outer loop. flat_state_cnt might
exceed ACPI_PROCESSOR_MAX_POWER if it is incremented multiple times
within the inner loop between outer loop iterations.

Add a bounds check after the increment inside the inner loop so that
it breaks out when flat_state_cnt reaches ACPI_PROCESSOR_MAX_POWER.
The existing check in the outer loop will then handle the warning.

Signed-off-by: Jingkai Tan <contact@jingk.ai>
Reviewed-by: Sudeep Holla <sudeep.holla@kernel.org>
Link: https://patch.msgid.link/20260305213831.53985-1-contact@jingk.ai
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/processor_idle.c

index f6c72e3a2be1b59da863d4a167065ea346cce7fe..d4753420ae0b7abd55c5b958b564265cb31f08ea 100644 (file)
@@ -1068,6 +1068,8 @@ static unsigned int flatten_lpi_states(struct acpi_processor *pr,
                                stash_composite_state(curr_level, flpi);
                                flat_state_cnt++;
                                flpi++;
+                               if (flat_state_cnt >= ACPI_PROCESSOR_MAX_POWER)
+                                       break;
                        }
                }
        }