]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
HID: pidff: Fix integer overflow in pidff_rescale
authorTomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Sun, 10 May 2026 12:23:52 +0000 (14:23 +0200)
committerJiri Kosina <jkosina@suse.com>
Tue, 12 May 2026 16:13:40 +0000 (18:13 +0200)
commit48d1677779ad6816978ad4a4f7588aec5ec960fe
treed37cd01da4a5772bb3d1fc27a1de205d6074db73
parenta991aa5e89365ba1959fae6847fd288125b209e5
HID: pidff: Fix integer overflow in pidff_rescale

Rescaling values close to the max (U16_MAX) temporarily creates values
that exceed the s32 range. This caused value overflow in case when, for
example, a periodic effect phase was higer than 180 degrees. In turn,
rescale function could return values outised of the logical range of the
HID field.

Fix by using 64 bit signed integer to store the value during calculation
but still return only 32 bit integer.

Closes: https://github.com/JacKeTUs/universal-pidff/issues/116
Fixes: 224ee88fe395 ("Input: add force feedback driver for PID devices")
Cc: stable@vger.kernel.org
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