mirror of
https://github.com/acpica/acpica/
synced 2025-02-19 15:04:30 +03:00
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:
parent
49e3d7cf76
commit
071d377c96
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user