diff options
-rw-r--r-- | arch/x86/kernel/e820.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 50895c2f937d..a687d10da417 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -671,21 +671,18 @@ __init void e820__reallocate_tables(void) | |||
671 | int size; | 671 | int size; |
672 | 672 | ||
673 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table->nr_entries; | 673 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table->nr_entries; |
674 | n = kmalloc(size, GFP_KERNEL); | 674 | n = kmemdup(e820_table, size, GFP_KERNEL); |
675 | BUG_ON(!n); | 675 | BUG_ON(!n); |
676 | memcpy(n, e820_table, size); | ||
677 | e820_table = n; | 676 | e820_table = n; |
678 | 677 | ||
679 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table_kexec->nr_entries; | 678 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table_kexec->nr_entries; |
680 | n = kmalloc(size, GFP_KERNEL); | 679 | n = kmemdup(e820_table_kexec, size, GFP_KERNEL); |
681 | BUG_ON(!n); | 680 | BUG_ON(!n); |
682 | memcpy(n, e820_table_kexec, size); | ||
683 | e820_table_kexec = n; | 681 | e820_table_kexec = n; |
684 | 682 | ||
685 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table_firmware->nr_entries; | 683 | size = offsetof(struct e820_table, entries) + sizeof(struct e820_entry)*e820_table_firmware->nr_entries; |
686 | n = kmalloc(size, GFP_KERNEL); | 684 | n = kmemdup(e820_table_firmware, size, GFP_KERNEL); |
687 | BUG_ON(!n); | 685 | BUG_ON(!n); |
688 | memcpy(n, e820_table_firmware, size); | ||
689 | e820_table_firmware = n; | 686 | e820_table_firmware = n; |
690 | } | 687 | } |
691 | 688 | ||