aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/usbhid
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@iki.fi>2009-11-03 17:57:35 -0500
committerJiri Kosina <jkosina@suse.cz>2009-11-04 04:04:08 -0500
commit1168df7e1cbfa4b45ba2bfd982ff535df50c273c (patch)
treec619c65b41b5422f001f55b59e8bb183fd71b493 /drivers/hid/usbhid
parent80f506918fdaaca6b574ba931536a58ce015c7be (diff)
HID: pidff - fix unnecessary loop iterations on reset
When encountering a strange value in the pool report, pidff_reset will always refetch the report 20 times, even if one of the retries results in a sane value. This is because a temporary variable being used to store the value is not being updated inside the loop. Fix it by using the value directly in the loop. Reported-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/usbhid')
-rw-r--r--drivers/hid/usbhid/hid-pidff.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c
index 484e3eec2f88..e565dbe91d97 100644
--- a/drivers/hid/usbhid/hid-pidff.c
+++ b/drivers/hid/usbhid/hid-pidff.c
@@ -1181,12 +1181,11 @@ static void pidff_reset(struct pidff_device *pidff)
1181 usbhid_wait_io(hid); 1181 usbhid_wait_io(hid);
1182 1182
1183 if (pidff->pool[PID_SIMULTANEOUS_MAX].value) { 1183 if (pidff->pool[PID_SIMULTANEOUS_MAX].value) {
1184 int sim_effects = pidff->pool[PID_SIMULTANEOUS_MAX].value[0]; 1184 while (pidff->pool[PID_SIMULTANEOUS_MAX].value[0] < 2) {
1185 while (sim_effects < 2) {
1186 if (i++ > 20) { 1185 if (i++ > 20) {
1187 printk(KERN_WARNING "hid-pidff: device reports " 1186 printk(KERN_WARNING "hid-pidff: device reports "
1188 "%d simultaneous effects\n", 1187 "%d simultaneous effects\n",
1189 sim_effects); 1188 pidff->pool[PID_SIMULTANEOUS_MAX].value[0]);
1190 break; 1189 break;
1191 } 1190 }
1192 debug("pid_pool requested again"); 1191 debug("pid_pool requested again");