From d865b3810bb1c2a0f9b92f1162f48ce547db8bae Mon Sep 17 00:00:00 2001 From: Len Brown Date: Wed, 6 May 2026 10:00:00 -0400 Subject: [PATCH] x86_energy_perf_policy: Bound package iteration Add explicit bounds checking against MAX_PACKAGES in for_packages() to prevent potential out-of-bounds bit shift operations. Also, use consistent shift idiom: (1ULL << pkg_num) Assisted-by: GitHub-Copilot:Claude-Sonnet-4.6 Reviewed-by: Andy Shevchenko Signed-off-by: Len Brown --- .../x86/x86_energy_perf_policy/x86_energy_perf_policy.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c index e79462f93f3a..2d77f465f1ee 100644 --- a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c +++ b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c @@ -509,7 +509,7 @@ void parse_cmdline_pkg(char *s) while (pkg <= end_pkg) { if (pkg > max_pkg_num) errx(1, "Requested pkg%d exceeds max pkg%d", pkg, max_pkg_num); - pkg_selected_set |= 1 << pkg; + pkg_selected_set |= 1ULL << pkg; pkg++; } startp = endp; @@ -526,7 +526,7 @@ void parse_cmdline_pkg(char *s) if (startp == endp || errno == ERANGE || pkg < 0 || pkg > max_pkg_num) errx(1, "Confused by pkg '%s'", startp); - pkg_selected_set |= 1 << pkg; + pkg_selected_set |= 1ULL << pkg; startp = endp; } } @@ -535,8 +535,8 @@ void for_packages(unsigned long long pkg_set, int (func) (int)) { int pkg_num; - for (pkg_num = 0; pkg_num <= max_pkg_num; ++pkg_num) { - if (pkg_set & (1UL << pkg_num)) + for (pkg_num = 0; pkg_num <= max_pkg_num && pkg_num < MAX_PACKAGES; ++pkg_num) { + if (pkg_set & (1ULL << pkg_num)) func(pkg_num); } }