diff options
Diffstat (limited to 'purgatory/arch')
-rw-r--r-- | purgatory/arch/i386/crashdump_backup.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/purgatory/arch/i386/crashdump_backup.c b/purgatory/arch/i386/crashdump_backup.c index c619446..365eb5d 100644 --- a/purgatory/arch/i386/crashdump_backup.c +++ b/purgatory/arch/i386/crashdump_backup.c @@ -20,13 +20,15 @@ #include <stdint.h> #include <string.h> -#include "../../../kexec/arch/i386/crashdump-x86.h" /* Backup region start gets set after /proc/iomem has been parsed. */ /* We reuse the same code for x86_64 also so changing backup_start to unsigned long */ unsigned long backup_start = 0; +unsigned long backup_src_start = 0; +unsigned long backup_src_size = 0; + /* Backup first 640K of memory to backup region as reserved by kexec. * Assuming first 640K has to be present on i386 machines and no address * validity checks have to be performed. */ @@ -34,11 +36,16 @@ unsigned long backup_start = 0; void crashdump_backup_memory(void) { void *dest, *src; + size_t size; + + src = (void *) backup_src_start; + size = (size_t) backup_src_size; - src = (void *) BACKUP_SRC_START; + if (!size) + return; if (backup_start) { dest = (void *)(backup_start); - memcpy(dest, src, BACKUP_SRC_SIZE); + memcpy(dest, src, size); } } |