Kernel: Don't initialize early framebuffer console if address is invalid
To do so, we now check that the framebuffer type is RGB so we know that the Multiboot bootloader actually provided a valid framebuffer to work with. This fixes a problem I observed on my ICH7 test machine that apparently the multiboot_framebuffer_addr was not null but there was no framebuffer that was set up for RGB colors, and by initializing that console, there was a memory curroption caused somewhere in the EBDA area to probably cause a complete system lockup.
This commit is contained in:
parent
eca8f292a5
commit
3bbb5734af
Notes:
sideshowbarker
2024-07-18 03:20:18 +09:00
Author: https://github.com/supercomputer7 Commit: https://github.com/SerenityOS/serenity/commit/3bbb5734af Pull-request: https://github.com/SerenityOS/serenity/pull/13091 Reviewed-by: https://github.com/bgianfo Reviewed-by: https://github.com/linusg
1 changed files with 1 additions and 1 deletions
|
@ -196,7 +196,7 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init(BootInfo const& boot_info)
|
|||
// If the bootloader didn't provide a framebuffer, then set up an initial text console.
|
||||
// We do so we can see the output on the screen as soon as possible.
|
||||
if (!kernel_command_line().is_early_boot_console_disabled()) {
|
||||
if (!multiboot_framebuffer_addr.is_null()) {
|
||||
if (!multiboot_framebuffer_addr.is_null() && multiboot_framebuffer_type == MULTIBOOT_FRAMEBUFFER_TYPE_RGB) {
|
||||
g_boot_console = &try_make_ref_counted<Graphics::BootFramebufferConsole>(multiboot_framebuffer_addr, multiboot_framebuffer_width, multiboot_framebuffer_height, multiboot_framebuffer_pitch).value().leak_ref();
|
||||
} else {
|
||||
g_boot_console = &Graphics::TextModeConsole::initialize().leak_ref();
|
||||
|
|
Loading…
Add table
Reference in a new issue