| From 7271e20538815674a05f3413ffeb33a77a165fcb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 25 Feb 2025 23:30:01 +0100 |
| Subject: HID: pidff: Clamp effect playback LOOP_COUNT value |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com> |
| |
| [ Upstream commit 0c6673e3d17b258b8c5c7331d28bf6c49f25ed30 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/hid/usbhid/hid-pidff.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c |
| index ffecc712be003..74b033a4ac1b8 100644 |
| --- a/drivers/hid/usbhid/hid-pidff.c |
| +++ b/drivers/hid/usbhid/hid-pidff.c |
| @@ -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], |
| -- |
| 2.39.5 |
| |