Correctly set data for USB request in case of a previous failure.

Message ID 201301141606.20156.hselasky@c2i.net (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Hans Petter Selasky Jan. 14, 2013, 3:06 p.m. UTC
  Improved patch follows:

--HPS

From a88d72d2108f92f004a3f050a708d9b7f661f924 Mon Sep 17 00:00:00 2001
From: Hans Petter Selasky <hselasky@c2i.net>
Date: Mon, 14 Jan 2013 13:53:21 +0100
Subject: [PATCH] Correctly initialize data for USB request.

Found-by: Jan Beich
Signed-off-by: Hans Petter Selasky <hselasky@c2i.net>
---
 drivers/input/tablet/wacom.h     | 1 +
 drivers/input/tablet/wacom_sys.c | 8 +++++---
 2 files changed, 6 insertions(+), 3 deletions(-)
  

Comments

Mauro Carvalho Chehab Feb. 5, 2013, 11:23 p.m. UTC | #1
Em Mon, 14 Jan 2013 16:06:20 +0100
Hans Petter Selasky <hselasky@c2i.net> escreveu:

> Improved patch follows:

It would be even more improved if you send it to the right ML ;)

I suspect that your original intention were to send it to
linux-input ML, instead of linux-media :)

Regards,
Mauro

> 
> --HPS
> 
> From a88d72d2108f92f004a3f050a708d9b7f661f924 Mon Sep 17 00:00:00 2001
> From: Hans Petter Selasky <hselasky@c2i.net>
> Date: Mon, 14 Jan 2013 13:53:21 +0100
> Subject: [PATCH] Correctly initialize data for USB request.
> 
> Found-by: Jan Beich
> Signed-off-by: Hans Petter Selasky <hselasky@c2i.net>
> ---
>  drivers/input/tablet/wacom.h     | 1 +
>  drivers/input/tablet/wacom_sys.c | 8 +++++---
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h
> index b79d451..d6fad87 100644
> --- a/drivers/input/tablet/wacom.h
> +++ b/drivers/input/tablet/wacom.h
> @@ -89,6 +89,7 @@
>  #include <linux/init.h>
>  #include <linux/usb/input.h>
>  #include <linux/power_supply.h>
> +#include <linux/string.h>
>  #include <asm/unaligned.h>
>  
>  /*
> diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
> index f92d34f..23bc71e 100644
> --- a/drivers/input/tablet/wacom_sys.c
> +++ b/drivers/input/tablet/wacom_sys.c
> @@ -553,10 +553,12 @@ static int wacom_set_device_mode(struct usb_interface *intf, int report_id, int
>  	if (!rep_data)
>  		return error;
>  
> -	rep_data[0] = report_id;
> -	rep_data[1] = mode;
> -
>  	do {
> +		memset(rep_data, 0, length);
> +
> +		rep_data[0] = report_id;
> +		rep_data[1] = mode;
> +
>  		error = wacom_set_report(intf, WAC_HID_FEATURE_REPORT,
>  		                         report_id, rep_data, length, 1);
>  		if (error >= 0)
  
Hans Petter Selasky Feb. 6, 2013, 7:13 a.m. UTC | #2
On Wednesday 06 February 2013 00:23:08 Mauro Carvalho Chehab wrote:
> Em Mon, 14 Jan 2013 16:06:20 +0100
> 
> Hans Petter Selasky <hselasky@c2i.net> escreveu:
> > Improved patch follows:
> It would be even more improved if you send it to the right ML ;)
> 
> I suspect that your original intention were to send it to
> linux-input ML, instead of linux-media :)

Ok, will do. Thanks!

--HPS
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h
index b79d451..d6fad87 100644
--- a/drivers/input/tablet/wacom.h
+++ b/drivers/input/tablet/wacom.h
@@ -89,6 +89,7 @@ 
 #include <linux/init.h>
 #include <linux/usb/input.h>
 #include <linux/power_supply.h>
+#include <linux/string.h>
 #include <asm/unaligned.h>
 
 /*
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index f92d34f..23bc71e 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -553,10 +553,12 @@  static int wacom_set_device_mode(struct usb_interface *intf, int report_id, int
 	if (!rep_data)
 		return error;
 
-	rep_data[0] = report_id;
-	rep_data[1] = mode;
-
 	do {
+		memset(rep_data, 0, length);
+
+		rep_data[0] = report_id;
+		rep_data[1] = mode;
+
 		error = wacom_set_report(intf, WAC_HID_FEATURE_REPORT,
 		                         report_id, rep_data, length, 1);
 		if (error >= 0)