diff options
author | Anton Kling <anton@kling.gg> | 2024-05-01 18:38:22 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-05-01 18:38:59 +0200 |
commit | faebb71b8a84e33f4f2b3f8f70f845011483c5c5 (patch) | |
tree | 6df89af1c0eb0925a614504cf93eb3c9434202e5 /kernel/drivers/keyboard.c | |
parent | 44e18bb63daa932ed844591de4d2dbb3777d63f7 (diff) |
Kernel/Keyboard: Only write to buffer after it is initialized
Diffstat (limited to 'kernel/drivers/keyboard.c')
-rw-r--r-- | kernel/drivers/keyboard.c | 7 |
1 files changed, 5 insertions, 2 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) { |