aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/tables/tbutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/tables/tbutils.c')
-rw-r--r--drivers/acpi/tables/tbutils.c50
1 files changed, 26 insertions, 24 deletions
diff --git a/drivers/acpi/tables/tbutils.c b/drivers/acpi/tables/tbutils.c
index 4b2fbb592f49..bc571592f087 100644
--- a/drivers/acpi/tables/tbutils.c
+++ b/drivers/acpi/tables/tbutils.c
@@ -5,7 +5,7 @@
5 *****************************************************************************/ 5 *****************************************************************************/
6 6
7/* 7/*
8 * Copyright (C) 2000 - 2005, R. Byron Moore 8 * Copyright (C) 2000 - 2006, R. Byron Moore
9 * All rights reserved. 9 * All rights reserved.
10 * 10 *
11 * Redistribution and use in source and binary forms, with or without 11 * Redistribution and use in source and binary forms, with or without
@@ -94,9 +94,8 @@ acpi_status acpi_tb_is_table_installed(struct acpi_table_desc *new_table_desc)
94 new_table_desc->pointer->length) 94 new_table_desc->pointer->length)
95 && 95 &&
96 (!ACPI_MEMCMP 96 (!ACPI_MEMCMP
97 ((const char *)table_desc->pointer, 97 (table_desc->pointer, new_table_desc->pointer,
98 (const char *)new_table_desc->pointer, 98 new_table_desc->pointer->length))) {
99 (acpi_size) new_table_desc->pointer->length))) {
100 /* Match: this table is already installed */ 99 /* Match: this table is already installed */
101 100
102 ACPI_DEBUG_PRINT((ACPI_DB_TABLES, 101 ACPI_DEBUG_PRINT((ACPI_DB_TABLES,
@@ -145,14 +144,13 @@ acpi_tb_validate_table_header(struct acpi_table_header *table_header)
145{ 144{
146 acpi_name signature; 145 acpi_name signature;
147 146
148 ACPI_FUNCTION_NAME("tb_validate_table_header"); 147 ACPI_FUNCTION_ENTRY();
149 148
150 /* Verify that this is a valid address */ 149 /* Verify that this is a valid address */
151 150
152 if (!acpi_os_readable(table_header, sizeof(struct acpi_table_header))) { 151 if (!acpi_os_readable(table_header, sizeof(struct acpi_table_header))) {
153 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 152 ACPI_ERROR((AE_INFO,
154 "Cannot read table header at %p\n", 153 "Cannot read table header at %p", table_header));
155 table_header));
156 154
157 return (AE_BAD_ADDRESS); 155 return (AE_BAD_ADDRESS);
158 } 156 }
@@ -161,12 +159,12 @@ acpi_tb_validate_table_header(struct acpi_table_header *table_header)
161 159
162 ACPI_MOVE_32_TO_32(&signature, table_header->signature); 160 ACPI_MOVE_32_TO_32(&signature, table_header->signature);
163 if (!acpi_ut_valid_acpi_name(signature)) { 161 if (!acpi_ut_valid_acpi_name(signature)) {
164 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 162 ACPI_ERROR((AE_INFO,
165 "Table signature at %p [%p] has invalid characters\n", 163 "Table signature at %p [%p] has invalid characters",
166 table_header, &signature)); 164 table_header, &signature));
167 165
168 ACPI_REPORT_WARNING(("Invalid table signature found: [%4.4s]\n", 166 ACPI_WARNING((AE_INFO, "Invalid table signature found: [%4.4s]",
169 (char *)&signature)); 167 ACPI_CAST_PTR(char, &signature)));
170 168
171 ACPI_DUMP_BUFFER(table_header, 169 ACPI_DUMP_BUFFER(table_header,
172 sizeof(struct acpi_table_header)); 170 sizeof(struct acpi_table_header));
@@ -176,11 +174,13 @@ acpi_tb_validate_table_header(struct acpi_table_header *table_header)
176 /* Validate the table length */ 174 /* Validate the table length */
177 175
178 if (table_header->length < sizeof(struct acpi_table_header)) { 176 if (table_header->length < sizeof(struct acpi_table_header)) {
179 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 177 ACPI_ERROR((AE_INFO,
180 "Invalid length in table header %p name %4.4s\n", 178 "Invalid length in table header %p name %4.4s",
181 table_header, (char *)&signature)); 179 table_header, (char *)&signature));
182 180
183 ACPI_REPORT_WARNING(("Invalid table header length (0x%X) found\n", (u32) table_header->length)); 181 ACPI_WARNING((AE_INFO,
182 "Invalid table header length (0x%X) found",
183 (u32) table_header->length));
184 184
185 ACPI_DUMP_BUFFER(table_header, 185 ACPI_DUMP_BUFFER(table_header,
186 sizeof(struct acpi_table_header)); 186 sizeof(struct acpi_table_header));
@@ -219,7 +219,10 @@ acpi_tb_verify_table_checksum(struct acpi_table_header * table_header)
219 /* Return the appropriate exception */ 219 /* Return the appropriate exception */
220 220
221 if (checksum) { 221 if (checksum) {
222 ACPI_REPORT_WARNING(("Invalid checksum in table [%4.4s] (%02X, sum %02X is not zero)\n", table_header->signature, (u32) table_header->checksum, (u32) checksum)); 222 ACPI_WARNING((AE_INFO,
223 "Invalid checksum in table [%4.4s] (%02X, sum %02X is not zero)",
224 table_header->signature,
225 (u32) table_header->checksum, (u32) checksum));
223 226
224 status = AE_BAD_CHECKSUM; 227 status = AE_BAD_CHECKSUM;
225 } 228 }
@@ -241,16 +244,16 @@ acpi_tb_verify_table_checksum(struct acpi_table_header * table_header)
241 244
242u8 acpi_tb_generate_checksum(void *buffer, u32 length) 245u8 acpi_tb_generate_checksum(void *buffer, u32 length)
243{ 246{
244 const u8 *limit; 247 u8 *end_buffer;
245 const u8 *rover; 248 u8 *rover;
246 u8 sum = 0; 249 u8 sum = 0;
247 250
248 if (buffer && length) { 251 if (buffer && length) {
249 /* Buffer and Length are valid */ 252 /* Buffer and Length are valid */
250 253
251 limit = (u8 *) buffer + length; 254 end_buffer = ACPI_ADD_PTR(u8, buffer, length);
252 255
253 for (rover = buffer; rover < limit; rover++) { 256 for (rover = buffer; rover < end_buffer; rover++) {
254 sum = (u8) (sum + *rover); 257 sum = (u8) (sum + *rover);
255 } 258 }
256 } 259 }
@@ -292,8 +295,7 @@ acpi_tb_handle_to_object(u16 table_id,
292 } 295 }
293 } 296 }
294 297
295 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "table_id=%X does not exist\n", 298 ACPI_ERROR((AE_INFO, "table_id=%X does not exist", table_id));
296 table_id));
297 return (AE_BAD_PARAMETER); 299 return (AE_BAD_PARAMETER);
298} 300}
299#endif 301#endif