grml...
[seabios.git] / src / biostables.c
index 761b2608f4d20f28f743738dfe84ce31aa553519..57a5c5753b446ef46d6d835dd4031d7b53ffa432 100644 (file)
@@ -86,6 +86,8 @@ copy_acpi_rsdp(void *pos)
 void
 copy_smbios(void *pos)
 {
+    if (SMBiosAddr)
+        return;
     struct smbios_entry_point *p = pos;
     if (memcmp(p->anchor_string, "_SM_", 4))
         return;
@@ -95,11 +97,12 @@ copy_smbios(void *pos)
         return;
     if (checksum(pos+0x10, p->length-0x10) != 0)
         return;
-    struct smbios_entry_point *newpos = malloc_fseg(sizeof(p->length));
+    struct smbios_entry_point *newpos = malloc_fseg(p->length);
     if (!newpos) {
         warn_noalloc();
         return;
     }
     dprintf(1, "Copying SMBIOS entry point from %p to %p\n", pos, newpos);
     memcpy(newpos, pos, p->length);
+    SMBiosAddr = newpos;
 }