summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2019-04-28 23:23:48 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2019-04-28 23:23:48 +0200
commit0294ec07a1655b2883afae5877eb9111a7f3a343 (patch)
treeef9bc2c5b188ff132d26d8a9102bee3acfb5bf12
parent843738b4e2333d8e9e3e02bc4d4474a56a28b88b (diff)
Avoid calling biosmem with size 0
* i386/i386at/model_dep.c (register_boot_data): Register reserved biosmem areas only when they have a non-zero size.
-rw-r--r--i386/i386at/model_dep.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
index b25676fd..04660a6d 100644
--- a/i386/i386at/model_dep.c
+++ b/i386/i386at/model_dep.c
@@ -297,7 +297,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
for (i = 0; i < mbi->mods_count; i++) {
mod = (struct multiboot_raw_module *)tmp + i;
- biosmem_register_boot_data(mod->mod_start, mod->mod_end, TRUE);
+ if (mod->mod_end != mod->mod_start)
+ biosmem_register_boot_data(mod->mod_start, mod->mod_end, TRUE);
if (mod->string != 0) {
biosmem_register_boot_data(mod->string,
@@ -310,7 +311,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
if (mbi->flags & MULTIBOOT_LOADER_SHDR) {
tmp = mbi->shdr_num * mbi->shdr_size;
- biosmem_register_boot_data(mbi->shdr_addr, mbi->shdr_addr + tmp, FALSE);
+ if (tmp != 0)
+ biosmem_register_boot_data(mbi->shdr_addr, mbi->shdr_addr + tmp, FALSE);
tmp = phystokv(mbi->shdr_addr);
@@ -321,7 +323,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
&& (shdr->type != ELF_SHT_STRTAB))
continue;
- biosmem_register_boot_data(shdr->addr, shdr->addr + shdr->size, FALSE);
+ if (shdr->size != 0)
+ biosmem_register_boot_data(shdr->addr, shdr->addr + shdr->size, FALSE);
}
}
}