diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/hwpf/hwpf_reasoncodes.H | 2 | ||||
-rw-r--r-- | src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C | 31 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/include/usr/hwpf/hwpf_reasoncodes.H b/src/include/usr/hwpf/hwpf_reasoncodes.H index 1a0d9c873..ce8f55e0e 100644 --- a/src/include/usr/hwpf/hwpf_reasoncodes.H +++ b/src/include/usr/hwpf/hwpf_reasoncodes.H @@ -65,6 +65,7 @@ namespace fapi MOD_PLAT_ATTR_SVC_GET_BADDQ_DATA = 0x1A, MOD_PLAT_ATTR_SVC_SET_BADDQ_DATA = 0x1B, MOD_HOST_COALESCE_HOST = 0x1C, + MOD_ATTR_OVERRIDE = 0x1D, }; /** @@ -112,6 +113,7 @@ namespace fapi RC_NO_SINGLE_MBA = HWPF_COMP_ID | 0x29, RC_HOST_TIMER_EXPIRED = HWPF_COMP_ID | 0x2A, RC_HOST_TIMER_THREAD_FAIL = HWPF_COMP_ID | 0x2B, + RC_NULL_POINTER = HWPF_COMP_ID | 0x2C, }; /** diff --git a/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C b/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C index 05b67d0ba..99da5d9f9 100644 --- a/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C +++ b/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -40,6 +40,7 @@ #include <mbox/mboxif.H> #include <hwpf/plat/fapiPlatAttrOverrideSync.H> #include <hwpf/plat/fapiPlatTrace.H> +#include <hwpf/hwpf_reasoncodes.H> #include <targeting/common/utilFilter.H> #include <targeting/common/attributeTank.H> @@ -171,7 +172,30 @@ void AttrOverrideSync::monitorForFspMessages() l_chunk.iv_size = l_pMsg->data[1]; l_chunk.iv_pAttributes = static_cast<uint8_t *>(l_pMsg->extra_data); - if (l_tank == TARGETING::AttributeTank::TANK_LAYER_FAPI) + if (l_chunk.iv_pAttributes == NULL) + { + FAPI_ERR("monitorForFspMessages: tank %d, size %d, NULL data pointer", + l_tank, l_chunk.iv_size); + /*@ + * @errortype + * @moduleid fapi::MOD_ATTR_OVERRIDE + * @reasoncode fapi::RC_NULL_POINTER + * @userdata1 Attribute Tank (FAPI/TARG) + * @userdata2 Size of attribute overrides + * @devdesc Override message received from HWSV + * contains NULL data pointer + */ + const bool hbSwError = false; + errlHndl_t l_pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + fapi::MOD_ATTR_OVERRIDE, + fapi::RC_NULL_POINTER, + l_tank, l_chunk.iv_size, hbSwError); + l_pError->addProcedureCallout(HWAS::EPUB_PRC_SP_CODE, + HWAS::SRCI_PRIORITY_HIGH); + errlCommit(l_pError, HWPF_COMP_ID); + } + else if (l_tank == TARGETING::AttributeTank::TANK_LAYER_FAPI) { FAPI_INF( "monitorForFspMessages: MSG_SET_OVERRIDES FAPI (size %lld)", @@ -224,6 +248,9 @@ void AttrOverrideSync::monitorForFspMessages() { FAPI_ERR("monitorForFspMessages: Unrecognized message 0x%x", l_pMsg->type); + free(l_pMsg->extra_data); + l_pMsg->extra_data = NULL; + msg_free(l_pMsg); } } } |