1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 23:15:08 +00:00

Kernel: Ensure that CommandLine is initialized before choosing PanicMode

If the kernel commandline is not initialized, just halt everything.
This commit is contained in:
Liav A 2022-01-21 11:36:32 +02:00 committed by Idan Horowitz
parent 0adee378fd
commit d67c70d043
3 changed files with 8 additions and 0 deletions

View file

@ -27,6 +27,11 @@ UNMAP_AFTER_INIT void CommandLine::early_initialize(const char* cmd_line)
s_cmd_line[length] = '\0'; s_cmd_line[length] = '\0';
} }
bool CommandLine::was_initialized()
{
return s_the != nullptr;
}
const CommandLine& kernel_command_line() const CommandLine& kernel_command_line()
{ {
VERIFY(s_the); VERIFY(s_the);

View file

@ -45,6 +45,7 @@ class CommandLine {
public: public:
static void early_initialize(const char* cmd_line); static void early_initialize(const char* cmd_line);
static void initialize(); static void initialize();
static bool was_initialized();
enum class Validate { enum class Validate {
Yes, Yes,

View file

@ -33,6 +33,8 @@ void __panic(const char* file, unsigned int line, const char* function)
critical_dmesgln("at {}:{} in {}", file, line, function); critical_dmesgln("at {}:{} in {}", file, line, function);
dump_backtrace(PrintToScreen::Yes); dump_backtrace(PrintToScreen::Yes);
if (!CommandLine::was_initialized())
Processor::halt();
switch (kernel_command_line().panic_mode()) { switch (kernel_command_line().panic_mode()) {
case PanicMode::Shutdown: case PanicMode::Shutdown:
__shutdown(); __shutdown();