aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2013-09-11 21:56:50 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-10-01 08:55:47 -0700
commit7247e66f07168b28410549634ea5d29a84602f81 (patch)
tree8cf89fa6158264c93d3abc2e63cf60cb0f2ef6e1 /include
parentd46f78f18ccd208c5325357bfe108f5e02044b6b (diff)
downloadkernel_samsung_smdk4412-7247e66f07168b28410549634ea5d29a84602f81.zip
kernel_samsung_smdk4412-7247e66f07168b28410549634ea5d29a84602f81.tar.gz
kernel_samsung_smdk4412-7247e66f07168b28410549634ea5d29a84602f81.tar.bz2
HID: provide a helper for validating hid reports
commit 331415ff16a12147d57d5c953f3a961b7ede348b upstream. Many drivers need to validate the characteristics of their HID report during initialization to avoid misusing the reports. This adds a common helper to perform validation of the report exisitng, the field existing, and the expected number of values within the field. Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/hid.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h
index af30c64..4649e29 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -713,6 +713,10 @@ void hid_output_report(struct hid_report *report, __u8 *data);
struct hid_device *hid_allocate_device(void);
struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id);
int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size);
+struct hid_report *hid_validate_values(struct hid_device *hid,
+ unsigned int type, unsigned int id,
+ unsigned int field_index,
+ unsigned int report_counts);
int hid_check_keys_pressed(struct hid_device *hid);
int hid_connect(struct hid_device *hid, unsigned int connect_mask);
void hid_disconnect(struct hid_device *hid);