summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <justus@gnupg.org>2016-04-15 14:38:52 +0200
committerJustus Winter <justus@gnupg.org>2016-04-15 14:41:13 +0200
commit82513815bde3005f20ab904d9d64673b53b6a7c4 (patch)
treed54dd2c12d043f81c07a7a6527f6f4767ac55716
parentb028365c6b2d8d4eb2000e5c9a2abdd2c5523f1d (diff)
i386: Fix error handling
* i386/i386at/model_dep.c (i386at_init): Fix error handling. Signed-off-by: Justus Winter <justus@gnupg.org>
-rw-r--r--i386/i386at/model_dep.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
index 62763ae1..679d524a 100644
--- a/i386/i386at/model_dep.c
+++ b/i386/i386at/model_dep.c
@@ -301,7 +301,8 @@ i386at_init(void)
* is too far in physical memory. */
if (boot_info.flags & MULTIBOOT_CMDLINE) {
int len = strlen ((char*)phystokv(boot_info.cmdline)) + 1;
- assert(init_alloc_aligned(round_page(len), &addr));
+ if (! init_alloc_aligned(round_page(len), &addr))
+ panic("could not allocate memory for multiboot command line");
kernel_cmdline = (char*) phystokv(addr);
memcpy(kernel_cmdline, (void *)phystokv(boot_info.cmdline), len);
boot_info.cmdline = addr;
@@ -311,20 +312,26 @@ i386at_init(void)
struct multiboot_module *m;
int i;
- assert(init_alloc_aligned(round_page(boot_info.mods_count * sizeof(*m)), &addr));
+ if (! init_alloc_aligned(
+ round_page(boot_info.mods_count * sizeof(*m)), &addr))
+ panic("could not allocate memory for multiboot modules");
m = (void*) phystokv(addr);
memcpy(m, (void*) phystokv(boot_info.mods_addr), boot_info.mods_count * sizeof(*m));
boot_info.mods_addr = addr;
for (i = 0; i < boot_info.mods_count; i++) {
vm_size_t size = m[i].mod_end - m[i].mod_start;
- assert(init_alloc_aligned(round_page(size), &addr));
+ if (! init_alloc_aligned(round_page(size), &addr))
+ panic("could not allocate memory for multiboot "
+ "module %d", i);
memcpy((void*) phystokv(addr), (void*) phystokv(m[i].mod_start), size);
m[i].mod_start = addr;
m[i].mod_end = addr + size;
size = strlen((char*) phystokv(m[i].string)) + 1;
- assert(init_alloc_aligned(round_page(size), &addr));
+ if (! init_alloc_aligned(round_page(size), &addr))
+ panic("could not allocate memory for multiboot "
+ "module command line %d", i);
memcpy((void*) phystokv(addr), (void*) phystokv(m[i].string), size);
m[i].string = addr;
}