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>
This commit is contained in:
parent
80f506918f
commit
1168df7e1c
@ -1181,12 +1181,11 @@ static void pidff_reset(struct pidff_device *pidff)
|
|||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
if (pidff->pool[PID_SIMULTANEOUS_MAX].value) {
|
if (pidff->pool[PID_SIMULTANEOUS_MAX].value) {
|
||||||
int sim_effects = pidff->pool[PID_SIMULTANEOUS_MAX].value[0];
|
while (pidff->pool[PID_SIMULTANEOUS_MAX].value[0] < 2) {
|
||||||
while (sim_effects < 2) {
|
|
||||||
if (i++ > 20) {
|
if (i++ > 20) {
|
||||||
printk(KERN_WARNING "hid-pidff: device reports "
|
printk(KERN_WARNING "hid-pidff: device reports "
|
||||||
"%d simultaneous effects\n",
|
"%d simultaneous effects\n",
|
||||||
sim_effects);
|
pidff->pool[PID_SIMULTANEOUS_MAX].value[0]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
debug("pid_pool requested again");
|
debug("pid_pool requested again");
|
||||||
|
Loading…
Reference in New Issue
Block a user