summaryrefslogtreecommitdiff
path: root/drivers/hid
diff options
context:
space:
mode:
authorNikolai Kondrashov <spbnick@gmail.com>2010-08-22 21:26:22 +0400
committerJiri Kosina <jkosina@suse.cz>2010-09-02 09:36:11 +0200
commit67168fd7d4044f21c542128529216cfaad23c03e (patch)
treece7fe277fca3fd2ef32fdf055431e680a668e1a9 /drivers/hid
parentcdd49a85e237929a4c00965f1a88bdd9195898d8 (diff)
downloadlinux-3.10-67168fd7d4044f21c542128529216cfaad23c03e.tar.gz
linux-3.10-67168fd7d4044f21c542128529216cfaad23c03e.tar.bz2
linux-3.10-67168fd7d4044f21c542128529216cfaad23c03e.zip
HID: rdesc parser: remove local item size limit
The HID report descriptor parser requires local items, except "delimiters", to have data. I.e. to have non-zero size. This removes the restriction. The HID specification doesn't seem to have such restriction and, for example, a "usage" item could have zero size if the usage ID is zero. At least one usage page - Keyboard/Keypad lists zero ID as valid. This doesn't seem to happen in the wild, probably because the official tool for authoring report descriptors always puts data even for zero values for some items, including "usage" items. However, this makes little sense and at least one open source tool for descriptor authoring generates zero data size "usage" items, which saves some space, especially if many such items are used in a descriptor. Signed-off-by: Nikolai Kondrashov <spbnick@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-core.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index d0240d5e779..fbabe52cbcd 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -388,12 +388,6 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
__u32 data;
unsigned n;
- /* Local delimiter could have value 0, which allows size to be 0 */
- if (item->size == 0 && item->tag != HID_LOCAL_ITEM_TAG_DELIMITER) {
- dbg_hid("item data expected for local item\n");
- return -1;
- }
-
data = item_udata(item);
switch (item->tag) {