]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
HID: pidff: Clamp effect playback LOOP_COUNT value
authorTomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Tue, 25 Feb 2025 22:30:01 +0000 (23:30 +0100)
committerJiri Kosina <jkosina@suse.com>
Tue, 4 Mar 2025 20:42:44 +0000 (21:42 +0100)
Ensures the loop count will never exceed the logical_maximum.

Fixes implementation errors happening when applications use the max
value of int32/DWORD as the effect iterations. This could be observed
when running software both native and in wine.

Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/usbhid/hid-pidff.c

index ffecc712be003580871265fb482c0d1ed5e412d7..74b033a4ac1b8ece665f325471cdc114eae67bb1 100644 (file)
@@ -690,7 +690,8 @@ static void pidff_playback_pid(struct pidff_device *pidff, int pid_id, int n)
        } else {
                pidff->effect_operation_status->value[0] =
                        pidff->operation_id[PID_EFFECT_START];
-               pidff->effect_operation[PID_LOOP_COUNT].value[0] = n;
+               pidff->effect_operation[PID_LOOP_COUNT].value[0] =
+                       pidff_clamp(n, pidff->effect_operation[PID_LOOP_COUNT].field);
        }
 
        hid_hw_request(pidff->hid, pidff->reports[PID_EFFECT_OPERATION],