From b6a8373cc1b1806d37a53109ae0f368bad958fc1 Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Tue, 12 Apr 2016 08:54:25 -0700 Subject: [PATCH] power/cray - Prevent possible divide by zero --- NEWS | 1 + src/plugins/power/cray/power_cray.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 0c1a454dab9..2e1bac7290f 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ documents those changes that are of interest to users and administrators. and it doesn't meet basic requirements. -- burst_buffer/cray - Fix for script creating or deleting persistent buffer would fail "paths" operation and hold the job. + -- power/cray - Prevent possible divide by zero. * Changes in Slurm 15.08.10 =========================== diff --git a/src/plugins/power/cray/power_cray.c b/src/plugins/power/cray/power_cray.c index e0ef5ac7788..1afce377eaa 100644 --- a/src/plugins/power/cray/power_cray.c +++ b/src/plugins/power/cray/power_cray.c @@ -1437,13 +1437,16 @@ static void _rebalance_node_power(void) if ((alloc_power > cap_watts) || (node_power_needed > avail_power)) { /* When CapWatts changes, we might need to lower nodes more * than the configured change rate specifications */ - uint32_t red1 = 0, red2 = 0; + uint32_t red1 = 0, red2 = 0, node_num; if (alloc_power > cap_watts) red1 = alloc_power - cap_watts; if (node_power_needed > avail_power) red2 = node_power_needed - avail_power; red1 = MAX(red1, red2); - red1 /= (node_power_lower_cnt + node_power_same_cnt); + node_num = node_power_lower_cnt + node_power_same_cnt; + if (node_num == 0) + node_num = node_record_count; + red1 /= node_num; for (i = 0, node_ptr = node_record_table_ptr; i < node_record_count; i++, node_ptr++) { if (!node_ptr->power || !node_ptr->power->new_cap_watts) -- GitLab