diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c index 5d310f2013..4775b68cd9 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c @@ -22,7 +22,9 @@ @param [in] Node Newly created node. @param [in] ParentNode If provided, set ParentNode as the parent of the node created. - @param [out] NewObjectNode If success, contains the created object node. + @param [out] NewObjectNode If not NULL: + - and Success, contains the created Node. + - and Error, reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -39,7 +41,7 @@ LinkNode ( EFI_STATUS Status; if (NewObjectNode != NULL) { - *NewObjectNode = Node; + *NewObjectNode = NULL; } // Add RdNode as the last element. @@ -51,6 +53,10 @@ LinkNode ( } } + if (NewObjectNode != NULL) { + *NewObjectNode = Node; + } + return EFI_SUCCESS; } diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c index 089597a6c9..cba942c0fd 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c @@ -33,7 +33,9 @@ RdNode is then added at the end of the variable list of resource data elements, but before the "End Tag" Resource Data. - @param [out] NewRdNode If not NULL, update the its value to RdNode. + @param [out] NewRdNode If not NULL: + - and Success, contains RdNode. + - and Error, reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -52,7 +54,7 @@ LinkRdNode ( AML_OBJECT_NODE *BufferOpNode; if (NewRdNode != NULL) { - *NewRdNode = RdNode; + *NewRdNode = NULL; } if (ParentNode != NULL) { @@ -85,6 +87,10 @@ LinkRdNode ( } } + if (NewRdNode != NULL) { + *NewRdNode = RdNode; + } + return Status; error_handler: diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.c b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.c index 3740c0ac7b..300b07a2ef 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.c @@ -79,7 +79,9 @@ AmlDeleteRootNode ( @param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy the data from. - @param [out] NewRootNodePtr The created AML_ROOT_NODE. + @param [out] NewRootNodePtr If success, contains the created + AML_ROOT_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -101,6 +103,8 @@ AmlCreateRootNode ( return EFI_INVALID_PARAMETER; } + *NewRootNodePtr = NULL; + RootNode = AllocateZeroPool (sizeof (AML_ROOT_NODE)); if (RootNode == NULL) { ASSERT (0); @@ -163,7 +167,9 @@ AmlDeleteObjectNode ( @param [in] PkgLength PkgLength of the node if the AmlByteEncoding has the PkgLen attribute. 0 otherwise. - @param [out] NewObjectNodePtr The created AML_OBJECT_NODE. + @param [out] NewObjectNodePtr If success, contains the created + AML_OBJECT_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -186,6 +192,8 @@ AmlCreateObjectNode ( return EFI_INVALID_PARAMETER; } + *NewObjectNodePtr = NULL; + ObjectNode = AllocateZeroPool (sizeof (AML_OBJECT_NODE)); if (ObjectNode == NULL) { ASSERT (0); @@ -252,7 +260,9 @@ AmlDeleteDataNode ( this node. Data is copied from there. @param [in] DataSize Number of bytes to consider at the address pointed by Data. - @param [out] NewDataNodePtr The created AML_DATA_NODE. + @param [out] NewDataNodePtr If success, contains the created + AML_DATA_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -284,6 +294,8 @@ AmlCreateDataNode ( return EFI_INVALID_PARAMETER; } + *NewDataNodePtr = NULL; + DataNode = AllocateZeroPool (sizeof (AML_DATA_NODE)); if (DataNode == NULL) { ASSERT (0); diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.h b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.h index 3584b572ba..465a0e2b4b 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.h +++ b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNode.h @@ -17,7 +17,9 @@ @param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy the data from. - @param [out] NewRootNodePtr The created AML_ROOT_NODE. + @param [out] NewRootNodePtr If success, contains the created + AML_ROOT_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -36,7 +38,9 @@ AmlCreateRootNode ( @param [in] PkgLength PkgLength of the node if the AmlByteEncoding has the PkgLen attribute. 0 otherwise. - @param [out] NewObjectNodePtr The created AML_OBJECT_NODE. + @param [out] NewObjectNodePtr If success, contains the created + AML_OBJECT_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @@ -57,7 +61,9 @@ AmlCreateObjectNode ( this node. Data is copied from there. @param [in] DataSize Number of bytes to consider at the address pointed by Data. - @param [out] NewDataNodePtr The created AML_DATA_NODE. + @param [out] NewDataNodePtr If success, contains the created + AML_DATA_NODE. + Otherwise reset to NULL. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter.