From d2f72e803860554769516382d0a7b3fa76d6456f Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Mon, 6 Nov 2017 14:19:01 -0600 Subject: PRD: Fix sym count overflow in runtime TPS Change-Id: I69bea5ad79555c79543abf664fcae570bf3ce665 CQ: SW407268 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49315 Tested-by: Jenkins Server Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Brian J. Stegmiller Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49560 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW --- src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/usr') diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C index f9e732325..324ace8f9 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C @@ -107,7 +107,13 @@ bool __badDqCount( MemUtils::MaintSymbols i_nibbleStats, for ( auto sumCheck : i_nibbleStats) { if ( !(symData.symbol == sumCheck.symbol) ) - sum += sumCheck.count; + { + // Check for overflow. + if ( (sum + sumCheck.count) > 0xFF ) + sum = 0xFF; + else + sum += sumCheck.count; + } } if ( sum <= 1 ) { @@ -140,7 +146,12 @@ bool __badChipCount( MemUtils::MaintSymbols i_nibbleStats, for ( auto symData : i_nibbleStats ) { - sum += symData.count; + // Check for overflow. + if ( (sum + symData.count) > 0xFF ) + sum = 0xFF; + else + sum += symData.count; + if ( symData.count > 0 ) nonZeroCount++; if ( symData.count >= 2 ) @@ -182,7 +193,11 @@ void __sumAboveOneCount( MemUtils::MaintSymbols i_nibbleStats, { if ( symData.count > 0 ) { - sum += symData.count; + if ( (sum + symData.count) > 0xFF ) + sum = 0xFF; + else + sum += symData.count; + symList.push_back(symData); } } -- cgit v1.2.1