diff --git a/src/kernel/boot/multiboot.c b/src/kernel/boot/multiboot.c index 1f56987..5ad8abf 100644 --- a/src/kernel/boot/multiboot.c +++ b/src/kernel/boot/multiboot.c @@ -34,6 +34,8 @@ static int parse_multiboot2(struct taglist *tags) struct mmap *mmap; struct tag *tag = incptr(tags, sizeof(struct taglist)); + kernel_boot_data.mboot_tags = tag; + kernel_boot_data.tags_length = tags->total_size; while(tag->type) { switch(tag->type) @@ -99,6 +101,7 @@ int multiboot_page_used(uintptr_t page) fb_size = kernel_boot_data.fbinfo->framebuffer_pitch*(kernel_boot_data.fbinfo->framebuffer_height + 1); } if( + within_page(kernel_boot_data.mboot_tags, kernel_boot_data.tags_length) || within_page(kernel_boot_data.bootloader, strlen(kernel_boot_data.bootloader)) || within_page(kernel_boot_data.commandline, strlen(kernel_boot_data.commandline)) || within_page(kernel_boot_data.mmap, kernel_boot_data.mmap_size) || diff --git a/src/kernel/include/multiboot.h b/src/kernel/include/multiboot.h index c2c4b2b..44db4ca 100644 --- a/src/kernel/include/multiboot.h +++ b/src/kernel/include/multiboot.h @@ -27,6 +27,8 @@ struct fbinfo { struct kernel_boot_data_st{ int multiboot_version; + void *mboot_tags; + size_t tags_length; char *bootloader; char *commandline; size_t mmap_size;