[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] kbc: Race zwischen send_kbd_command und IRQ-Handler gefixt



! kbc: send_kbd_command wartet auf ein ACK von der Tastatur. Wenn die
  Tastatur aber ein ACK sendet, löst sie auch einen IRQ aus, und der
  IRQ-Handler kann das ACK klauen, so dass send_kbd_command ewig wartet.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/kbc/keyboard.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/modules/kbc/keyboard.c b/src/modules/kbc/keyboard.c
index bfacf01..89664a8 100644
--- a/src/modules/kbc/keyboard.c
+++ b/src/modules/kbc/keyboard.c
@@ -85,11 +85,13 @@ static void send_key_event(uint8_t keycode, bool release);
  */
 static void send_kbd_command(uint8_t command)
 {
+    p();
     while (inb(0x64) & 0x2) {
         yield();
     }
     outb(0x60, command);
     while (inb(0x60) != 0xfa);
+    v();
 }
 
 
-- 
1.6.0.2