diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-04-28 23:23:48 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-04-28 23:23:48 +0200 |
commit | 0294ec07a1655b2883afae5877eb9111a7f3a343 (patch) | |
tree | ef9bc2c5b188ff132d26d8a9102bee3acfb5bf12 /i386/i386at/model_dep.c | |
parent | 843738b4e2333d8e9e3e02bc4d4474a56a28b88b (diff) | |
download | gnumach-0294ec07a1655b2883afae5877eb9111a7f3a343.tar.gz gnumach-0294ec07a1655b2883afae5877eb9111a7f3a343.tar.bz2 gnumach-0294ec07a1655b2883afae5877eb9111a7f3a343.zip |
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.
Diffstat (limited to 'i386/i386at/model_dep.c')
-rw-r--r-- | i386/i386at/model_dep.c | 9 |
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); } } } |