aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-07-03 22:57:51 -0400
committerLen Brown <len.brown@intel.com>2008-10-22 23:14:36 -0400
commita6f30539f31a8129288b0e5640d3eb1174848c15 (patch)
tree5a8210fee6445161bd44ef3bead4b86828d47d15 /drivers/acpi
parent9db4fcd99f7ef886ded97cd26a8642c70fbe34df (diff)
ACPICA: Fix table compare code, length then data
Split the ACPI table compare. First check that the lengths match exactly. Then compare the data. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/tables/tbinstal.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/acpi/tables/tbinstal.c b/drivers/acpi/tables/tbinstal.c
index 905dc38ab23b..18747ce8dd2f 100644
--- a/drivers/acpi/tables/tbinstal.c
+++ b/drivers/acpi/tables/tbinstal.c
@@ -110,7 +110,6 @@ acpi_status
110acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index) 110acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index)
111{ 111{
112 u32 i; 112 u32 i;
113 u32 length;
114 acpi_status status = AE_OK; 113 acpi_status status = AE_OK;
115 114
116 ACPI_FUNCTION_TRACE(tb_add_table); 115 ACPI_FUNCTION_TRACE(tb_add_table);
@@ -145,13 +144,18 @@ acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index)
145 } 144 }
146 } 145 }
147 146
148 /* Check for a table match on the entire table length */ 147 /*
148 * Check for a table match on the entire table length,
149 * not just the header.
150 */
151 if (table_desc->length !=
152 acpi_gbl_root_table_list.tables[i].length) {
153 continue;
154 }
149 155
150 length = ACPI_MIN(table_desc->length,
151 acpi_gbl_root_table_list.tables[i].length);
152 if (ACPI_MEMCMP(table_desc->pointer, 156 if (ACPI_MEMCMP(table_desc->pointer,
153 acpi_gbl_root_table_list.tables[i].pointer, 157 acpi_gbl_root_table_list.tables[i].pointer,
154 length)) { 158 acpi_gbl_root_table_list.tables[i].length)) {
155 continue; 159 continue;
156 } 160 }
157 161