Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5288eb5 authored by Jiri Kosina's avatar Jiri Kosina
Browse files

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: default avatarGuillaume Chazarain <guichaz@gmail.com>
Tested-by: default avatarGuillaume Chazarain <guichaz@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 89092ddd
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -1825,6 +1825,9 @@ int hid_check_keys_pressed(struct hid_device *hid)
	struct hid_input *hidinput;
	struct hid_input *hidinput;
	int i;
	int i;


	if (!(hid->claimed & HID_CLAIMED_INPUT))
		return 0;

	list_for_each_entry(hidinput, &hid->inputs, list) {
	list_for_each_entry(hidinput, &hid->inputs, list) {
		for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++)
		for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++)
			if (hidinput->input->key[i])
			if (hidinput->input->key[i])