summaryrefslogtreecommitdiff
path: root/kernel/drivers/keyboard.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-05-01 18:38:22 +0200
committerAnton Kling <anton@kling.gg>2024-05-01 18:38:59 +0200
commitfaebb71b8a84e33f4f2b3f8f70f845011483c5c5 (patch)
tree6df89af1c0eb0925a614504cf93eb3c9434202e5 /kernel/drivers/keyboard.c
parent44e18bb63daa932ed844591de4d2dbb3777d63f7 (diff)
Kernel/Keyboard: Only write to buffer after it is initialized
Diffstat (limited to 'kernel/drivers/keyboard.c')
-rw-r--r--kernel/drivers/keyboard.c7
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) {