aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPing Cheng <pinglinux@gmail.com>2016-12-09 01:04:52 -0500
committerJiri Kosina <jkosina@suse.cz>2016-12-09 07:26:24 -0500
commit6f46cf9b40df7d181f11989bab6f4cc08787cdfe (patch)
tree0ea166bcc25918006a1fd5a8232e2aae1707032b
parent354a32985a863c9eecd381a5f9eea480d5abc6dc (diff)
HID: wacom: generic: Send data only when the interface is defined
Sometime valid events may not be supported by the driver yet. Make sure we don't process them when the code is not ready. This fix prevents a kernel panic due to unsupported HID events. Signed-off-by: Ping Cheng <ping.cheng@wacom.com> Reviewed-By: Jason Gerecke <jason.gerecke@wacom.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/wacom_wac.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index f1c49a44c06a..29d261042fb2 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -2109,11 +2109,11 @@ void wacom_wac_event(struct hid_device *hdev, struct hid_field *field,
2109 if (wacom->wacom_wac.features.type != HID_GENERIC) 2109 if (wacom->wacom_wac.features.type != HID_GENERIC)
2110 return; 2110 return;
2111 2111
2112 if (WACOM_PAD_FIELD(field)) 2112 if (WACOM_PAD_FIELD(field) && wacom->wacom_wac.pad_input)
2113 wacom_wac_pad_event(hdev, field, usage, value); 2113 wacom_wac_pad_event(hdev, field, usage, value);
2114 else if (WACOM_PEN_FIELD(field)) 2114 else if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input)
2115 wacom_wac_pen_event(hdev, field, usage, value); 2115 wacom_wac_pen_event(hdev, field, usage, value);
2116 else if (WACOM_FINGER_FIELD(field)) 2116 else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input)
2117 wacom_wac_finger_event(hdev, field, usage, value); 2117 wacom_wac_finger_event(hdev, field, usage, value);
2118} 2118}
2119 2119
@@ -2145,20 +2145,20 @@ void wacom_wac_report(struct hid_device *hdev, struct hid_report *report)
2145 if (wacom_wac->features.type != HID_GENERIC) 2145 if (wacom_wac->features.type != HID_GENERIC)
2146 return; 2146 return;
2147 2147
2148 if (WACOM_PAD_FIELD(field)) 2148 if (WACOM_PAD_FIELD(field) && wacom->wacom_wac.pad_input)
2149 wacom_wac_pad_pre_report(hdev, report); 2149 wacom_wac_pad_pre_report(hdev, report);
2150 else if (WACOM_PEN_FIELD(field)) 2150 else if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input)
2151 wacom_wac_pen_pre_report(hdev, report); 2151 wacom_wac_pen_pre_report(hdev, report);
2152 else if (WACOM_FINGER_FIELD(field)) 2152 else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input)
2153 wacom_wac_finger_pre_report(hdev, report); 2153 wacom_wac_finger_pre_report(hdev, report);
2154 2154
2155 wacom_report_events(hdev, report); 2155 wacom_report_events(hdev, report);
2156 2156
2157 if (WACOM_PAD_FIELD(field)) 2157 if (WACOM_PAD_FIELD(field) && wacom->wacom_wac.pad_input)
2158 return wacom_wac_pad_report(hdev, report); 2158 return wacom_wac_pad_report(hdev, report);
2159 else if (WACOM_PEN_FIELD(field)) 2159 else if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input)
2160 return wacom_wac_pen_report(hdev, report); 2160 return wacom_wac_pen_report(hdev, report);
2161 else if (WACOM_FINGER_FIELD(field)) 2161 else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input)
2162 return wacom_wac_finger_report(hdev, report); 2162 return wacom_wac_finger_report(hdev, report);
2163} 2163}
2164 2164