mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 21:54:11 +08:00
HID: output event in debugfs even if hid_get_report() fails
if hid_get_report() fails for whatever reason, the raw output of the report doesn't make it into 'events' file in debugfs at all, because we leave hid_input_report() too soon. We want the report to be always present for debugging reasons. Move the code around, so that the event makes it to 'events' file all the time, even if we are going to discard the report. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
a85821fce2
commit
1caea61eda
@ -1096,20 +1096,11 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
|
||||
goto nomem;
|
||||
}
|
||||
|
||||
snprintf(buf, HID_DEBUG_BUFSIZE - 1,
|
||||
"\nreport (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un");
|
||||
hid_debug_event(hid, buf);
|
||||
|
||||
report = hid_get_report(report_enum, data);
|
||||
if (!report) {
|
||||
kfree(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* dump the report */
|
||||
snprintf(buf, HID_DEBUG_BUFSIZE - 1,
|
||||
"report %d (size %u) = ", report->id, size);
|
||||
"\nreport (size %u) (%snumbered) = ", size, report_enum->numbered ? "" : "un");
|
||||
hid_debug_event(hid, buf);
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
snprintf(buf, HID_DEBUG_BUFSIZE - 1,
|
||||
" %02x", data[i]);
|
||||
@ -1117,6 +1108,13 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
|
||||
}
|
||||
hid_debug_event(hid, "\n");
|
||||
|
||||
report = hid_get_report(report_enum, data);
|
||||
|
||||
if (!report) {
|
||||
kfree(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
kfree(buf);
|
||||
|
||||
nomem:
|
||||
|
Loading…
Reference in New Issue
Block a user