diff options
author | John Muir <muirj@google.com> | 2018-07-02 09:58:28 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-07-02 09:58:28 -0700 |
commit | d0782b9ecf8be684fc00ced607b4d24abab9f5a1 (patch) | |
tree | adcff8ceca45f51e4101f8b741440c417e984122 | |
parent | ccfbe3da3e0be9de308cd58a14715b13cf7e6fa7 (diff) | |
parent | fa2342c3cfdb5274e1d8b6c0e392ca820c07fc86 (diff) |
Merge 'daydreamos-msm-polaris-4.4-release' into 'daydreamos-msm-polaris-4.4'.android-daydreamos-8.0.0_r0.5
am: fa2342c3cf
Change-Id: Ic909c23efd6ede83d1bc616c6e541ef7525e4c16
-rw-r--r-- | drivers/input/tablet/gtco.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/input/tablet/gtco.c b/drivers/input/tablet/gtco.c index 7c18249d6c8e..8b68a210277b 100644 --- a/drivers/input/tablet/gtco.c +++ b/drivers/input/tablet/gtco.c @@ -231,13 +231,17 @@ static void parse_hid_report_descriptor(struct gtco *device, char * report, /* Walk this report and pull out the info we need */ while (i < length) { - prefix = report[i]; - - /* Skip over prefix */ - i++; + prefix = report[i++]; /* Determine data size and save the data in the proper variable */ - size = PREF_SIZE(prefix); + size = (1U << PREF_SIZE(prefix)) >> 1; + if (i + size > length) { + dev_err(ddev, + "Not enough data (need %d, have %d)\n", + i + size, length); + break; + } + switch (size) { case 1: data = report[i]; @@ -245,8 +249,7 @@ static void parse_hid_report_descriptor(struct gtco *device, char * report, case 2: data16 = get_unaligned_le16(&report[i]); break; - case 3: - size = 4; + case 4: data32 = get_unaligned_le32(&report[i]); break; } |