From: Jiri Kosina Date: Fri, 1 May 2009 22:02:57 +0000 (+0200) Subject: HID: fix oops in hid_check_keys_pressed() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e5288eb5ea89bd82d897cb687348bc608278f920;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git HID: fix oops in hid_check_keys_pressed() If the device is not claimed by hid-input (i.e devices driver by userspace hiddev/hidraw-based drivers, or completely detached from HID and driver by libusb), we must not check the hid->inptus, as it is not guaranteed to be initialized, as this is performed only for devices handled by hid-input. Reported-by: Guillaume Chazarain Tested-by: Guillaume Chazarain Signed-off-by: Jiri Kosina --- diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index c7075d2b0786..8551693d645f 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1825,6 +1825,9 @@ int hid_check_keys_pressed(struct hid_device *hid) struct hid_input *hidinput; int i; + if (!(hid->claimed & HID_CLAIMED_INPUT)) + return 0; + list_for_each_entry(hidinput, &hid->inputs, list) { for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++) if (hidinput->input->key[i])