aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/e820.c9
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