mirror of https://github.com/acidanthera/audk.git
DynamicTablesPkg: Clear pointer in node creation fcts
The following functions: - AmlCreateRootNode() - AmlCreateObjectNode() - AmlCreateDataNode() create a node and return it by populating a pointer. This pointer should only be considered/used if the function returns successfully. Otherwise, the value stored in this pointer should be ignored. For their error handling, some other functions assume that this pointer is reset to NULL if an error occurs during a node creation. To make this assumption correct, explicitly clear this input pointer. Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
This commit is contained in:
parent
7b2022d39e
commit
2dd7dd3952
|
@ -22,7 +22,9 @@
|
||||||
@param [in] Node Newly created node.
|
@param [in] Node Newly created node.
|
||||||
@param [in] ParentNode If provided, set ParentNode as the parent
|
@param [in] ParentNode If provided, set ParentNode as the parent
|
||||||
of the node created.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -39,7 +41,7 @@ LinkNode (
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
if (NewObjectNode != NULL) {
|
if (NewObjectNode != NULL) {
|
||||||
*NewObjectNode = Node;
|
*NewObjectNode = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add RdNode as the last element.
|
// Add RdNode as the last element.
|
||||||
|
@ -51,6 +53,10 @@ LinkNode (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NewObjectNode != NULL) {
|
||||||
|
*NewObjectNode = Node;
|
||||||
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,9 @@
|
||||||
RdNode is then added at the end of the variable
|
RdNode is then added at the end of the variable
|
||||||
list of resource data elements, but before the
|
list of resource data elements, but before the
|
||||||
"End Tag" Resource Data.
|
"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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -52,7 +54,7 @@ LinkRdNode (
|
||||||
AML_OBJECT_NODE *BufferOpNode;
|
AML_OBJECT_NODE *BufferOpNode;
|
||||||
|
|
||||||
if (NewRdNode != NULL) {
|
if (NewRdNode != NULL) {
|
||||||
*NewRdNode = RdNode;
|
*NewRdNode = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ParentNode != NULL) {
|
if (ParentNode != NULL) {
|
||||||
|
@ -85,6 +87,10 @@ LinkRdNode (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NewRdNode != NULL) {
|
||||||
|
*NewRdNode = RdNode;
|
||||||
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
error_handler:
|
error_handler:
|
||||||
|
|
|
@ -79,7 +79,9 @@ AmlDeleteRootNode (
|
||||||
|
|
||||||
@param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy
|
@param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy
|
||||||
the data from.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -101,6 +103,8 @@ AmlCreateRootNode (
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*NewRootNodePtr = NULL;
|
||||||
|
|
||||||
RootNode = AllocateZeroPool (sizeof (AML_ROOT_NODE));
|
RootNode = AllocateZeroPool (sizeof (AML_ROOT_NODE));
|
||||||
if (RootNode == NULL) {
|
if (RootNode == NULL) {
|
||||||
ASSERT (0);
|
ASSERT (0);
|
||||||
|
@ -163,7 +167,9 @@ AmlDeleteObjectNode (
|
||||||
@param [in] PkgLength PkgLength of the node if the AmlByteEncoding
|
@param [in] PkgLength PkgLength of the node if the AmlByteEncoding
|
||||||
has the PkgLen attribute.
|
has the PkgLen attribute.
|
||||||
0 otherwise.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -186,6 +192,8 @@ AmlCreateObjectNode (
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*NewObjectNodePtr = NULL;
|
||||||
|
|
||||||
ObjectNode = AllocateZeroPool (sizeof (AML_OBJECT_NODE));
|
ObjectNode = AllocateZeroPool (sizeof (AML_OBJECT_NODE));
|
||||||
if (ObjectNode == NULL) {
|
if (ObjectNode == NULL) {
|
||||||
ASSERT (0);
|
ASSERT (0);
|
||||||
|
@ -252,7 +260,9 @@ AmlDeleteDataNode (
|
||||||
this node. Data is copied from there.
|
this node. Data is copied from there.
|
||||||
@param [in] DataSize Number of bytes to consider at the address
|
@param [in] DataSize Number of bytes to consider at the address
|
||||||
pointed by Data.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -284,6 +294,8 @@ AmlCreateDataNode (
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*NewDataNodePtr = NULL;
|
||||||
|
|
||||||
DataNode = AllocateZeroPool (sizeof (AML_DATA_NODE));
|
DataNode = AllocateZeroPool (sizeof (AML_DATA_NODE));
|
||||||
if (DataNode == NULL) {
|
if (DataNode == NULL) {
|
||||||
ASSERT (0);
|
ASSERT (0);
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
|
|
||||||
@param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy
|
@param [in] SdtHeader Pointer to an ACPI DSDT/SSDT header to copy
|
||||||
the data from.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -36,7 +38,9 @@ AmlCreateRootNode (
|
||||||
@param [in] PkgLength PkgLength of the node if the AmlByteEncoding
|
@param [in] PkgLength PkgLength of the node if the AmlByteEncoding
|
||||||
has the PkgLen attribute.
|
has the PkgLen attribute.
|
||||||
0 otherwise.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
@ -57,7 +61,9 @@ AmlCreateObjectNode (
|
||||||
this node. Data is copied from there.
|
this node. Data is copied from there.
|
||||||
@param [in] DataSize Number of bytes to consider at the address
|
@param [in] DataSize Number of bytes to consider at the address
|
||||||
pointed by Data.
|
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_SUCCESS The function completed successfully.
|
||||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||||
|
|
Loading…
Reference in New Issue