mirror of https://github.com/acidanthera/audk.git
DynamicTablesPkg: Handle error when IdMappingToken is NULL
Add error handling when the IdMappingCount is not zero and the IdMappingToken is NULL. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>
This commit is contained in:
parent
8a210b9ac0
commit
65c4f3f2be
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
IORT Table Generator
|
||||
|
||||
Copyright (c) 2017 - 2020, ARM Limited. All rights reserved.
|
||||
Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@par Reference(s):
|
||||
|
@ -905,9 +905,19 @@ AddNamedComponentNodes (
|
|||
return Status;
|
||||
}
|
||||
|
||||
if ((NodeList->IdMappingCount > 0) &&
|
||||
(NodeList->IdMappingToken != CM_NULL_TOKEN))
|
||||
{
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: IORT: Invalid Id Mapping token,"
|
||||
" Token = 0x%x, Status =%r\n",
|
||||
NodeList->IdMappingToken,
|
||||
Status
|
||||
));
|
||||
return Status;
|
||||
}
|
||||
|
||||
// Ids for Named Component
|
||||
IdMapArray = (EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE *)((UINT8 *)NcNode +
|
||||
NcNode->Node.IdReference);
|
||||
|
@ -1011,9 +1021,19 @@ AddRootComplexNodes (
|
|||
RcNode->Reserved1[1] = EFI_ACPI_RESERVED_BYTE;
|
||||
RcNode->Reserved1[2] = EFI_ACPI_RESERVED_BYTE;
|
||||
|
||||
if ((NodeList->IdMappingCount > 0) &&
|
||||
(NodeList->IdMappingToken != CM_NULL_TOKEN))
|
||||
{
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: IORT: Invalid Id Mapping token,"
|
||||
" Token = 0x%x, Status =%r\n",
|
||||
NodeList->IdMappingToken,
|
||||
Status
|
||||
));
|
||||
return Status;
|
||||
}
|
||||
|
||||
// Ids for Root Complex
|
||||
IdMapArray = (EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE *)((UINT8 *)RcNode +
|
||||
RcNode->Node.IdReference);
|
||||
|
@ -1242,9 +1262,19 @@ AddSmmuV1V2Nodes (
|
|||
}
|
||||
}
|
||||
|
||||
if ((NodeList->IdMappingCount > 0) &&
|
||||
(NodeList->IdMappingToken != CM_NULL_TOKEN))
|
||||
{
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: IORT: Invalid Id Mapping token,"
|
||||
" Token = 0x%x, Status =%r\n",
|
||||
NodeList->IdMappingToken,
|
||||
Status
|
||||
));
|
||||
return Status;
|
||||
}
|
||||
|
||||
// Ids for SMMU v1/v2 Node
|
||||
IdMapArray = (EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE *)((UINT8 *)SmmuNode +
|
||||
SmmuNode->Node.IdReference);
|
||||
|
@ -1361,9 +1391,19 @@ AddSmmuV3Nodes (
|
|||
SmmuV3Node->DeviceIdMappingIndex = NodeList->DeviceIdMappingIndex;
|
||||
}
|
||||
|
||||
if ((NodeList->IdMappingCount > 0) &&
|
||||
(NodeList->IdMappingToken != CM_NULL_TOKEN))
|
||||
{
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: IORT: Invalid Id Mapping token,"
|
||||
" Token = 0x%x, Status =%r\n",
|
||||
NodeList->IdMappingToken,
|
||||
Status
|
||||
));
|
||||
return Status;
|
||||
}
|
||||
|
||||
// Ids for SMMUv3 node
|
||||
IdMapArray = (EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE *)((UINT8 *)SmmuV3Node +
|
||||
SmmuV3Node->Node.IdReference);
|
||||
|
@ -1476,9 +1516,19 @@ AddPmcgNodes (
|
|||
return Status;
|
||||
}
|
||||
|
||||
if ((NodeList->IdMappingCount > 0) &&
|
||||
(NodeList->IdMappingToken != CM_NULL_TOKEN))
|
||||
{
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: IORT: Invalid Id Mapping token,"
|
||||
" Token = 0x%x, Status =%r\n",
|
||||
NodeList->IdMappingToken,
|
||||
Status
|
||||
));
|
||||
return Status;
|
||||
}
|
||||
|
||||
// Ids for PMCG node
|
||||
IdMapArray = (EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE *)((UINT8 *)PmcgNode +
|
||||
PmcgNode->Node.IdReference);
|
||||
|
|
Loading…
Reference in New Issue