From 8869f45a965a7b12bb7fe03ba226167e1f821c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= Date: Mon, 22 Feb 2016 16:04:12 -0300 Subject: [PATCH] kdrive/evdev: update keyboard LEDs (#22302) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement missing parts in kdrive evdev driver for correct update of evdev keyboard LEDs. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=22302 [ajax: Fixed deref-before-null-check bug] Reviewed-by: Adam Jackson Signed-off-by: LaƩrcio de Sousa (cherry picked from commit 0461bca0cb2f7918c77ed45d2cbc756cf65021be) --- hw/kdrive/linux/evdev.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/kdrive/linux/evdev.c b/hw/kdrive/linux/evdev.c index 63e840996..752489489 100644 --- a/hw/kdrive/linux/evdev.c +++ b/hw/kdrive/linux/evdev.c @@ -440,10 +440,16 @@ EvdevKbdEnable(KdKeyboardInfo * ki) static void EvdevKbdLeds(KdKeyboardInfo * ki, int leds) { -/* struct input_event event; + struct input_event event; Kevdev *ke; - ki->driverPrivate = ke; + if (!ki) + return; + + ke = ki->driverPrivate; + + if (!ke) + return; memset(&event, 0, sizeof(event)); @@ -466,7 +472,6 @@ EvdevKbdLeds(KdKeyboardInfo * ki, int leds) event.code = LED_COMPOSE; event.value = leds & (1 << 3) ? 1 : 0; write(ke->fd, (char *) &event, sizeof(event)); -*/ } static void