From 737ac6c47d70d232620a3f836c8da69ca9ffaba7 Mon Sep 17 00:00:00 2001 From: Matthew Brush Date: Wed, 13 Aug 2025 17:55:58 -0700 Subject: [PATCH] Fix some "may be used uninitialized" warnings Need to enable level 1 or more optimization level for GCC to perform flow-sensitive analysis. These all look like legitimate issues which could cause strange hard-to-find bugs. --- kernel/console/kconsole/terminal.cpp | 2 +- kernel/input/usb.cpp | 4 ++-- kernel/input/xhci.cpp | 4 ++-- kernel/kernel_processes/monitor/monitor_processes.c | 6 +++--- kernel/memory/mmu.c | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kernel/console/kconsole/terminal.cpp b/kernel/console/kconsole/terminal.cpp index 76d5c7b6..c0b26377 100644 --- a/kernel/console/kconsole/terminal.cpp +++ b/kernel/console/kconsole/terminal.cpp @@ -70,7 +70,7 @@ void Terminal::run_command(){ string cmd; int argc = 0; const char** argv; - string args_copy; + string args_copy = {}; if (fullcmd == args){ cmd = string_l(fullcmd); diff --git a/kernel/input/usb.cpp b/kernel/input/usb.cpp index 9455ac5f..e7ed5e52 100644 --- a/kernel/input/usb.cpp +++ b/kernel/input/usb.cpp @@ -104,7 +104,7 @@ bool USBDriver::get_configuration(uint8_t address){ uint8_t* report_descriptor; uint16_t report_length; - usb_device_types dev_type; + usb_device_types dev_type = UNKNOWN; kprintf("[USB] set configuration %i for device %i", config->bConfigurationValue, address); request_sized_descriptor(address, 0, 0, 9, 0, config->bConfigurationValue, 0, 0, 0); @@ -212,4 +212,4 @@ void USBDriver::hub_enumerate(uint8_t address){ void USBDriver::poll_inputs(){ usb_manager->poll_inputs(this); -} \ No newline at end of file +} diff --git a/kernel/input/xhci.cpp b/kernel/input/xhci.cpp index 0df5a824..eebe1d16 100644 --- a/kernel/input/xhci.cpp +++ b/kernel/input/xhci.cpp @@ -57,7 +57,7 @@ bool XHCIDriver::check_fatal_error() { #define XHCI_EP_CONTROL 4 bool XHCIDriver::init(){ - uint64_t addr, mmio, mmio_size; + uint64_t addr = 0, mmio = 0, mmio_size = 0; bool use_pci = false; use_interrupts = true; if (XHCI_BASE){ @@ -596,4 +596,4 @@ void XHCIDriver::handle_interrupt(){ interrupter->erdp = (uintptr_t)&event_ring.ring[event_ring.index] | (1 << 3);//Inform of latest processed event interrupter->iman |= 1;//Clear interrupts op->usbsts |= 1 << 3;//Clear interrupts -} \ No newline at end of file +} diff --git a/kernel/kernel_processes/monitor/monitor_processes.c b/kernel/kernel_processes/monitor/monitor_processes.c index 22506f31..4e4262fe 100644 --- a/kernel/kernel_processes/monitor/monitor_processes.c +++ b/kernel/kernel_processes/monitor/monitor_processes.c @@ -93,7 +93,7 @@ void draw_process_view(){ int index = scroll_index; int valid_count = 0; - process_t *proc; + process_t *proc = NULL; while (index < MAX_PROCS) { proc = &processes[index]; if (proc->id != 0 && proc->state != STOPPED) { @@ -105,7 +105,7 @@ void draw_process_view(){ index++; } - if (proc->id == 0 || valid_count < i || proc->state == STOPPED) break; + if (proc == NULL || proc->id == 0 || valid_count < i || proc->state == STOPPED) break; string name = string_l((const char*)(uintptr_t)proc->name); string state = string_l(parse_proc_state(proc->state)); @@ -173,4 +173,4 @@ process_t* start_process_monitor(){ //TODO: disabled process monitor since shortcuts seem broken on rpi return 0x0;//create_kernel_process("procmonitor",monitor_procs, 0, 0); #endif -} \ No newline at end of file +} diff --git a/kernel/memory/mmu.c b/kernel/memory/mmu.c index 3b928c80..35c243ce 100644 --- a/kernel/memory/mmu.c +++ b/kernel/memory/mmu.c @@ -102,7 +102,7 @@ void mmu_map_4kb(uint64_t va, uint64_t pa, uint64_t attr_index, uint64_t level) return; } - uint8_t permission; + uint8_t permission = 0; switch (level) { @@ -277,4 +277,4 @@ void debug_mmu_address(uint64_t va){ } kprintf("Entry: %x", l4_val); return; -} \ No newline at end of file +}