diff options
author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2014-10-01 17:59:47 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2014-10-01 20:58:46 +0200 |
commit | 8493ecca74a7b4a66e19676de1a0f14194179941 (patch) | |
tree | 9c6af6d86f4cb17ea8d76f1c54a37c3a69c525bd /drivers/hid/uhid.c | |
parent | HID: uhid: update documentation (diff) | |
download | linux-8493ecca74a7b4a66e19676de1a0f14194179941.tar.xz linux-8493ecca74a7b4a66e19676de1a0f14194179941.zip |
HID: uHID: fix excepted report type
When uhid_get_report() or uhid_set_report() are called, they emit on the
char device a UHID_GET_REPORT or UHID_SET_REPORT message. Then, the
protocol says that the user space asnwers with UHID_GET_REPORT_REPLY
or UHID_SET_REPORT_REPLY.
Unfortunatelly, the current code waits for an event of type UHID_GET_REPORT
or UHID_SET_REPORT instead of the reply one.
Add 1 to UHID_GET_REPORT or UHID_SET_REPORT to actually wait for the
reply, and validate the reply.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/uhid.c')
-rw-r--r-- | drivers/hid/uhid.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c index f6ec5eaf6b89..e094c572b86e 100644 --- a/drivers/hid/uhid.c +++ b/drivers/hid/uhid.c @@ -154,7 +154,7 @@ static int __uhid_report_queue_and_wait(struct uhid_device *uhid, spin_lock_irqsave(&uhid->qlock, flags); *report_id = ++uhid->report_id; - uhid->report_type = ev->type; + uhid->report_type = ev->type + 1; uhid->report_running = true; uhid_queue(uhid, ev); spin_unlock_irqrestore(&uhid->qlock, flags); |