Make sure all multiboot tags are preserved

This commit is contained in:
Thomas Lovén 2022-01-08 21:47:51 +01:00
parent a46b4f68d0
commit 40999d3da3
2 changed files with 5 additions and 0 deletions

View File

@ -34,6 +34,8 @@ static int parse_multiboot2(struct taglist *tags)
struct mmap *mmap; struct mmap *mmap;
struct tag *tag = incptr(tags, sizeof(struct taglist)); 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) while(tag->type)
{ {
switch(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); fb_size = kernel_boot_data.fbinfo->framebuffer_pitch*(kernel_boot_data.fbinfo->framebuffer_height + 1);
} }
if( 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.bootloader, strlen(kernel_boot_data.bootloader)) ||
within_page(kernel_boot_data.commandline, strlen(kernel_boot_data.commandline)) || within_page(kernel_boot_data.commandline, strlen(kernel_boot_data.commandline)) ||
within_page(kernel_boot_data.mmap, kernel_boot_data.mmap_size) || within_page(kernel_boot_data.mmap, kernel_boot_data.mmap_size) ||

View File

@ -27,6 +27,8 @@ struct fbinfo {
struct kernel_boot_data_st{ struct kernel_boot_data_st{
int multiboot_version; int multiboot_version;
void *mboot_tags;
size_t tags_length;
char *bootloader; char *bootloader;
char *commandline; char *commandline;
size_t mmap_size; size_t mmap_size;