From: Chris Bagwell Date: Thu, 24 Jan 2013 03:37:34 +0000 (-0800) Subject: Input: wacom - fix wacom_set_report retry logic X-Git-Tag: v5.15~14237^2~303 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9937c026820baabd1e908a9c1e6bdc846293000a;p=platform%2Fkernel%2Flinux-starfive.git Input: wacom - fix wacom_set_report retry logic Logic sets a value and then reads it back to make sure it worked and retries write on failures. Since read and write share a buffer, it needs to be set back up before writing though. Issue is not seen a lot because 1) it doesn't need to retry for a lot of tablets and 2) a lot of failures that need a retry are from an -ETIMEDOUT and hopefully buffer is not touched in this case. At least one user has shown logs with buffer being modified during -ETIMEDOUT case with linux 3.7 kernel. Signed-off-by: Chris Bagwell Signed-off-by: Dmitry Torokhov --- diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index f92d34f..aaf23ae 100644 --- a/drivers/input/tablet/wacom_sys.c +++ b/drivers/input/tablet/wacom_sys.c @@ -553,10 +553,10 @@ 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 { + 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)