X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fbiostables.c;h=57a5c5753b446ef46d6d835dd4031d7b53ffa432;hb=refs%2Fheads%2Fcoreboot;hp=761b2608f4d20f28f743738dfe84ce31aa553519;hpb=74c78786719b202557d4f177bd290ddd98e979fe;p=seabios.git diff --git a/src/biostables.c b/src/biostables.c index 761b260..57a5c57 100644 --- a/src/biostables.c +++ b/src/biostables.c @@ -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; }