aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2010-04-02 17:00:37 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2010-04-02 17:00:37 +0000
commit28d6b3182d209b2a1385429a55f21fa8c79e6620 (patch)
tree5b75aa7d16519b03da2de459e49f7fb538eb9318
parent5097632a9372c44c1fb7683f81b382b220289a98 (diff)
downloadsrc-28d6b3182d209b2a1385429a55f21fa8c79e6620.tar.gz
src-28d6b3182d209b2a1385429a55f21fa8c79e6620.zip
Fixes for table load regression.
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=206107
-rw-r--r--tables/tbxface.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/tables/tbxface.c b/tables/tbxface.c
index 8cbf15ac8d4e..ba0ec0f7b255 100644
--- a/tables/tbxface.c
+++ b/tables/tbxface.c
@@ -552,18 +552,13 @@ AcpiTbLoadNamespace (
(void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);
/*
- * Save the DSDT pointer for simple access. This is the mapped memory
- * address. We must take care here because the address of the .Tables
- * array can change dynamically as tables are loaded at run-time
- */
- AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer;
-
- /*
* Load the namespace. The DSDT is required, but any SSDT and
* PSDT tables are optional. Verify the DSDT.
*/
if (!AcpiGbl_RootTableList.Count ||
- !ACPI_COMPARE_NAME (AcpiGbl_DSDT->Signature, ACPI_SIG_DSDT) ||
+ !ACPI_COMPARE_NAME (
+ &(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature),
+ ACPI_SIG_DSDT) ||
ACPI_FAILURE (AcpiTbVerifyTable (
&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT])))
{
@@ -572,6 +567,14 @@ AcpiTbLoadNamespace (
}
/*
+ * Save the DSDT pointer for simple access. This is the mapped memory
+ * address. We must take care here because the address of the .Tables
+ * array can change dynamically as tables are loaded at run-time. Note:
+ * .Pointer field is not validated until after call to AcpiTbVerifyTable.
+ */
+ AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer;
+
+ /*
* Optionally copy the entire DSDT to local memory (instead of simply
* mapping it.) There are some BIOSs that corrupt or replace the original
* DSDT, creating the need for this option. Default is FALSE, do not copy