From 128c6fd2afa49d01a7aa9d51fb73bfd171e77316 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: Harden against potential ratio overflow Prevent integer overflow in ratio_2_msr_perf() by using 64-bit arithmetic for the intermediate multiplication calculation. Assisted-by: GitHub-Copilot:Claude-Sonnet-4.6 Reviewed-by: Andy Shevchenko Signed-off-by: Len Brown --- .../power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 a6b918fff5e4..e79462f93f3a 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 @@ -141,11 +141,13 @@ void usage(void) int ratio_2_msr_perf(int ratio) { int msr_perf; + unsigned long long temp; if (!bdx_highest_ratio) return ratio; - msr_perf = ratio * 255 / bdx_highest_ratio; + temp = (unsigned long long)ratio * 255; + msr_perf = temp / bdx_highest_ratio; if (debug) fprintf(stderr, "%d = ratio_to_msr_perf(%d)\n", msr_perf, ratio);