diff mbox

HID: wacom - make sure touch_input is valid before using it

Message ID 1415323851-16453-1-git-send-email-pingc@wacom.com (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Ping Cheng Nov. 7, 2014, 1:30 a.m. UTC
touch_input is stored in wacom_shared for pen data to report touch
switch status. It is possible, although we didn't see it happen on
Linux yet, that pen data is procesed before touch interface is
fully probed.

As a by-product of this patch, it fixes the FreeBSD issue reported
by Denis Akiyakov http://www.spinics.net/lists/linux-input/msg33971.html

Reviewed-by: Hans Petter Selasky <hps@selasky.org>
Tested-by: Denis Akiyakov <d.akiyakov@gmail.com>
Signed-off-by: Ping Cheng <pingc@wacom.com>
---
 drivers/hid/wacom_wac.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Jiri Kosina Nov. 7, 2014, 3:42 p.m. UTC | #1
On Thu, 6 Nov 2014, Ping Cheng wrote:

> touch_input is stored in wacom_shared for pen data to report touch
> switch status. It is possible, although we didn't see it happen on
> Linux yet, that pen data is procesed before touch interface is
> fully probed.
> 
> As a by-product of this patch, it fixes the FreeBSD issue reported
> by Denis Akiyakov http://www.spinics.net/lists/linux-input/msg33971.html
> 
> Reviewed-by: Hans Petter Selasky <hps@selasky.org>
> Tested-by: Denis Akiyakov <d.akiyakov@gmail.com>
> Signed-off-by: Ping Cheng <pingc@wacom.com>

Applied, thanks.
diff mbox

Patch

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 8ce7fab..1048295 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -1681,7 +1681,9 @@  static int wacom_bpt_pen(struct wacom_wac *wacom)
 	    return 0;
 
 	if (data[0] == WACOM_REPORT_USB) {
-		if (features->type == INTUOSHT && features->touch_max) {
+		if (features->type == INTUOSHT &&
+		    wacom->shared->touch_input &&
+		    features->touch_max) {
 			input_report_switch(wacom->shared->touch_input,
 					    SW_MUTE_DEVICE, data[8] & 0x40);
 			input_sync(wacom->shared->touch_input);
@@ -1774,7 +1776,8 @@  static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len)
 		int pid, battery, ps_connected;
 
 		if ((wacom->shared->type == INTUOSHT) &&
-				wacom->shared->touch_max) {
+		    wacom->shared->touch_input &&
+		    wacom->shared->touch_max) {
 			input_report_switch(wacom->shared->touch_input,
 					SW_MUTE_DEVICE, data[5] & 0x40);
 			input_sync(wacom->shared->touch_input);