HID: fix a crash in hid_report_raw_event() function.
[firefly-linux-kernel-4.4.55.git] / drivers / hid / hid-core.c
index 852989fc57575b7dc7dda234a563ac2a32e3efd4..84df80e3efc1005f4f97279b1f5d6f5af7c3faf4 100644 (file)
@@ -1045,6 +1045,9 @@ void hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
 
        rsize = ((report->size - 1) >> 3) + 1;
 
+       if (rsize > HID_MAX_BUFFER_SIZE)
+               rsize = HID_MAX_BUFFER_SIZE;
+
        if (csize < rsize) {
                dbg_hid("report %d is too short, (%d < %d)\n", report->id,
                                csize, rsize);