Added error checking after all mutex acquires and most mutex releases.

date	2002.02.12.23.57.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 18:55:25 +00:00
parent 49e3d7cf76
commit 071d377c96
2 changed files with 36 additions and 30 deletions

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbinstal - ACPI table installation and removal
* $Revision: 1.52 $
* $Revision: 1.54 $
*
*****************************************************************************/
@ -118,12 +118,11 @@
#define __TBINSTAL_C__
#include "acpi.h"
#include "achware.h"
#include "actables.h"
#define _COMPONENT ACPI_TABLES
MODULE_NAME ("tbinstal")
ACPI_MODULE_NAME ("tbinstal")
/*******************************************************************************
@ -148,7 +147,7 @@ AcpiTbMatchSignature (
NATIVE_UINT i;
FUNCTION_TRACE ("TbMatchSignature");
ACPI_FUNCTION_TRACE ("TbMatchSignature");
/*
@ -199,7 +198,7 @@ AcpiTbInstallTable (
{
ACPI_STATUS Status;
FUNCTION_TRACE ("TbInstallTable");
ACPI_FUNCTION_TRACE ("TbInstallTable");
/*
@ -214,7 +213,11 @@ AcpiTbInstallTable (
/* Lock tables while installing */
AcpiUtAcquireMutex (ACPI_MTX_TABLES);
Status = AcpiUtAcquireMutex (ACPI_MTX_TABLES);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
/* Install the table into the global data structure */
@ -223,7 +226,7 @@ AcpiTbInstallTable (
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s located at %p\n",
AcpiGbl_AcpiTableData[TableInfo->Type].Name, TableInfo->Pointer));
AcpiUtReleaseMutex (ACPI_MTX_TABLES);
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_ACPI_STATUS (Status);
}
@ -258,7 +261,7 @@ AcpiTbRecognizeTable (
ACPI_STATUS Status;
FUNCTION_TRACE ("TbRecognizeTable");
ACPI_FUNCTION_TRACE ("TbRecognizeTable");
/* Ensure that we have a valid table pointer */
@ -327,7 +330,7 @@ AcpiTbInitTableDescriptor (
ACPI_TABLE_DESC *TableDesc;
FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType);
ACPI_FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType);
/*
* Install the table into the global data structure
@ -340,7 +343,7 @@ AcpiTbInitTableDescriptor (
* includes most ACPI tables such as the DSDT. 2) Multiple instances of
* the table are allowed. This includes SSDT and PSDTs.
*/
if (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags))
if (ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags))
{
/*
* Only one table allowed, and a table has alread been installed
@ -400,7 +403,7 @@ AcpiTbInitTableDescriptor (
TableDesc->AmlStart = (UINT8 *) (TableDesc->Pointer + 1),
TableDesc->AmlLength = (UINT32) (TableDesc->Length -
(UINT32) sizeof (ACPI_TABLE_HEADER));
TableDesc->TableId = AcpiUtAllocateOwnerId (OWNER_TYPE_TABLE);
TableDesc->TableId = AcpiUtAllocateOwnerId (ACPI_OWNER_TYPE_TABLE);
TableDesc->LoadedIntoNamespace = FALSE;
/*
@ -468,7 +471,7 @@ AcpiTbDeleteAcpiTable (
ACPI_TABLE_TYPE Type)
{
FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type);
ACPI_FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type);
if (Type > ACPI_TABLE_MAX)
@ -476,7 +479,10 @@ AcpiTbDeleteAcpiTable (
return_VOID;
}
AcpiUtAcquireMutex (ACPI_MTX_TABLES);
if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_TABLES)))
{
return;
}
/* Free the table */
@ -512,7 +518,7 @@ AcpiTbDeleteAcpiTable (
break;
}
AcpiUtReleaseMutex (ACPI_MTX_TABLES);
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_VOID;
}
@ -539,7 +545,7 @@ AcpiTbFreeAcpiTablesOfType (
UINT32 i;
FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead);
ACPI_FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead);
/* Get the head of the list */
@ -627,7 +633,7 @@ AcpiTbUninstallTable (
ACPI_TABLE_DESC *NextDesc;
FUNCTION_TRACE_PTR ("TbDeleteSingleTable", TableDesc);
ACPI_FUNCTION_TRACE_PTR ("TbDeleteSingleTable", TableDesc);
if (!TableDesc)

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbutils - Table manipulation utilities
* $Revision: 1.47 $
* $Revision: 1.49 $
*
*****************************************************************************/
@ -122,7 +122,7 @@
#define _COMPONENT ACPI_TABLES
MODULE_NAME ("tbutils")
ACPI_MODULE_NAME ("tbutils")
/*******************************************************************************
@ -147,7 +147,7 @@ AcpiTbHandleToObject (
ACPI_TABLE_DESC *ListHead;
PROC_NAME ("TbHandleToObject");
ACPI_FUNCTION_NAME ("TbHandleToObject");
for (i = 0; i < ACPI_TABLE_MAX; i++)
@ -199,7 +199,7 @@ AcpiTbValidateTableHeader (
ACPI_NAME Signature;
PROC_NAME ("TbValidateTableHeader");
ACPI_FUNCTION_NAME ("TbValidateTableHeader");
/* Verify that this is a valid address */
@ -214,15 +214,15 @@ AcpiTbValidateTableHeader (
/* Ensure that the signature is 4 ASCII characters */
MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature);
ACPI_MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature);
if (!AcpiUtValidAcpiName (Signature))
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Table signature at %p [%p] has invalid characters\n",
TableHeader, &Signature));
REPORT_WARNING (("Invalid table signature %4.4s found\n", (char *) &Signature));
DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER));
ACPI_REPORT_WARNING (("Invalid table signature %4.4s found\n", (char *) &Signature));
ACPI_DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER));
return (AE_BAD_SIGNATURE);
}
@ -235,8 +235,8 @@ AcpiTbValidateTableHeader (
"Invalid length in table header %p name %4.4s\n",
TableHeader, (char *) &Signature));
REPORT_WARNING (("Invalid table header length (0x%X) found\n", TableHeader->Length));
DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER));
ACPI_REPORT_WARNING (("Invalid table header length (0x%X) found\n", TableHeader->Length));
ACPI_DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER));
return (AE_BAD_HEADER);
}
@ -271,7 +271,7 @@ AcpiTbMapAcpiTable (
ACPI_STATUS Status = AE_OK;
PROC_NAME ("TbMapAcpiTable");
ACPI_FUNCTION_NAME ("TbMapAcpiTable");
/* If size is zero, look at the table header to get the actual size */
@ -350,7 +350,7 @@ AcpiTbVerifyTableChecksum (
ACPI_STATUS Status = AE_OK;
FUNCTION_TRACE ("TbVerifyTableChecksum");
ACPI_FUNCTION_TRACE ("TbVerifyTableChecksum");
/* Compute the checksum on the table */
@ -361,7 +361,7 @@ AcpiTbVerifyTableChecksum (
if (Checksum)
{
REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n",
ACPI_REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n",
Checksum, (char *) &TableHeader->Signature));
Status = AE_BAD_CHECKSUM;
@ -390,8 +390,8 @@ AcpiTbChecksum (
void *Buffer,
UINT32 Length)
{
UINT8 *limit;
UINT8 *rover;
const UINT8 *limit;
const UINT8 *rover;
UINT8 sum = 0;