return EFI_INVALID_PARAMETER;\r
}\r
\r
+ Status = EFI_SUCCESS;\r
CommunicateHeader = CommBufferVirtual;\r
// CommBuffer is a mandatory parameter. Hence, Rely on\r
// MessageLength + Header to ascertain the\r
(*CommSize > mNsCommBuffMemRegion.Length))\r
{\r
*CommSize = mNsCommBuffMemRegion.Length;\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
}\r
\r
//\r
// CommSize should cover at least MessageLength + sizeof (EFI_MM_COMMUNICATE_HEADER);\r
//\r
if (*CommSize < BufferSize) {\r
- return EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
}\r
}\r
\r
//\r
- // If the buffer size is 0 or greater than what can be tolerated by the MM\r
+ // If the message length is 0 or greater than what can be tolerated by the MM\r
// environment then return the expected size.\r
//\r
- if ((BufferSize == 0) ||\r
+ if ((CommunicateHeader->MessageLength == 0) ||\r
(BufferSize > mNsCommBuffMemRegion.Length))\r
{\r
CommunicateHeader->MessageLength = mNsCommBuffMemRegion.Length -\r
sizeof (CommunicateHeader->HeaderGuid) -\r
sizeof (CommunicateHeader->MessageLength);\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ }\r
+\r
+ // MessageLength or CommSize check has failed, return here.\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
}\r
\r
// SMC Function ID\r