diff mbox

[RFC,7/7] acpi: fix bug in acpi_checksum() caused by garbage in checksum field

Message ID 7498607873ad7c9ff59d0a24d35391c0e4ba0a11.1269936879.git.eduard.munteanu@linux360.ro (mailing list archive)
State New, archived
Headers show

Commit Message

Eduard - Gabriel Munteanu March 30, 2010, 8:20 a.m. UTC
None
diff mbox

Patch

diff --git a/hw/acpi.c b/hw/acpi.c
index f067f85..bb015f3 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -832,11 +832,16 @@  size_t acpi_tables_len, acpi_tables_prev_len;
 static int acpi_checksum(const uint8_t *data, int len)
 {
     int sum, i;
+    struct acpi_table_header *acpi_hdr;
 
     sum = 0;
     for(i = 0; i < len; i++)
         sum += data[i];
 
+    /* Ignore preexisting garbage in checksum. */
+    acpi_hdr = (struct acpi_table_header *) data;
+    sum -= acpi_hdr->checksum;
+
     return (-sum) & 0xff;
 }