From 54d001ee91b36b80a38898f76b8963e4cfae8fe9 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Mon, 1 May 2017 14:51:35 -0600
Subject: [PATCH] node_features/knl_cray hardening

This change will avoid possible problems in the event that "capmc get_mcdram_cfg"
  fails to return a mcdram_pct value. Never observed, but this will harden the
  code just in case...
bug 3679
---
 .../node_features/knl_cray/node_features_knl_cray.c    | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/plugins/node_features/knl_cray/node_features_knl_cray.c b/src/plugins/node_features/knl_cray/node_features_knl_cray.c
index 18f5627711b..24a6a5c2b65 100644
--- a/src/plugins/node_features/knl_cray/node_features_knl_cray.c
+++ b/src/plugins/node_features/knl_cray/node_features_knl_cray.c
@@ -670,6 +670,11 @@ static void _json_parse_mcdram_cfg_object(json_object *jobj, mcdram_cfg_t *ent)
 	int64_t x;
 	const char *p;
 
+	/* Initialize object */
+	ent->dram_size   = NO_VAL;
+	ent->mcdram_pct  = NO_VAL16;
+	ent->mcdram_size = NO_VAL;
+
 	json_object_object_foreachC(jobj, iter) {
 		type = json_object_get_type(iter.val);
 		switch (type) {
@@ -2287,8 +2292,9 @@ static int _update_node_state(char *node_list, bool set_locks)
 			    !bit_test(mcdram_cfg2[k].node_bitmap,
 				      mcdram_cfg[i].nid))
 				continue;
-			if (mcdram_cfg[i].mcdram_pct !=
-			    mcdram_cfg2[k].cache_pct) {
+			if ((mcdram_cfg[i].mcdram_pct != NO_VAL16) &&
+			    (mcdram_cfg[i].mcdram_pct !=
+			     mcdram_cfg2[k].cache_pct)) {
 				info("%s: HBM mismatch between capmc and cnselect for nid %u (%u != %d)",
 				     __func__, mcdram_cfg[i].nid,
 				     mcdram_cfg[i].mcdram_pct,
-- 
GitLab