From faebb71b8a84e33f4f2b3f8f70f845011483c5c5 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 1 May 2024 18:38:22 +0200 Subject: Kernel/Keyboard: Only write to buffer after it is initialized --- kernel/drivers/keyboard.c | 7 +++++-- kernel/init/kernel.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/drivers/keyboard.c b/kernel/drivers/keyboard.c index a120788..fb85e39 100644 --- a/kernel/drivers/keyboard.c +++ b/kernel/drivers/keyboard.c @@ -86,7 +86,7 @@ u8 capital_ascii_table[] = { ' ', // ; }; -vfs_inode_t *kb_inode; +vfs_inode_t *kb_inode = NULL; u8 keyboard_to_ascii(u16 key, u8 capital) { if ((key & 0xFF) > sizeof(ascii_table)) { @@ -112,9 +112,12 @@ struct KEY_EVENT { extern process_t *ready_queue; void int_keyboard(reg_t *frame) { - outb(0x20, 0x20); u16 c; c = inb(PS2_REG_DATA); + outb(0x20, 0x20); + if (!kb_inode) { + return; + } int released = 0; if (c & 0x80) { switch ((c & ~(0x80)) & 0xFF) { diff --git a/kernel/init/kernel.c b/kernel/init/kernel.c index 0a2243d..090e03f 100644 --- a/kernel/init/kernel.c +++ b/kernel/init/kernel.c @@ -85,7 +85,7 @@ void kernel_main(u32 kernel_end, unsigned long magic, unsigned long addr, install_keyboard(); klog("PS2 Keyboard driver installed", LOG_SUCCESS); -global_socket_init(); + global_socket_init(); vfs_mount("/dev", devfs_mount()); assert(ahci_init()); -- cgit v1.2.3