[PATCH] HID: pidff: Use correct effect type in effect update

From: Oleg Makarenko

Date: Tue Jun 09 2026 - 12:22:13 EST


When updating an existing effect, the effect type from the last created
effect was sent to the device instead of the updated one.
This caused incorrect reports when a game creates multiple different
effects and updates only one that is not the last created.

Fixes FFB in multiple games that create multiple simultaneous effects
(Forza Horizon 5/6).

Fixes: 224ee88fe395 ("Input: add force feedback driver for PID devices")
Cc: <stable@xxxxxxxxxxxxxxx>
Tested-by: Oliver Roundtree <oroundtree1@xxxxxxxxx>
Co-developed-by: Ryno Kotzé <lemon.xah@xxxxxxxxx>
Signed-off-by: Ryno Kotzé <lemon.xah@xxxxxxxxx>
Signed-off-by: Oleg Makarenko <oleg@xxxxxxxxxxxx>
---
drivers/hid/usbhid/hid-pidff.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c
index c45f182d0448..5f4395f7c645 100644
--- a/drivers/hid/usbhid/hid-pidff.c
+++ b/drivers/hid/usbhid/hid-pidff.c
@@ -522,7 +522,7 @@ static void pidff_set_effect_report(struct pidff_device *pidff,
pidff->set_effect[PID_EFFECT_BLOCK_INDEX].value[0] =
pidff->block_load[PID_EFFECT_BLOCK_INDEX].value[0];
pidff->set_effect_type->value[0] =
- pidff->create_new_effect_type->value[0];
+ pidff_get_effect_type_id(pidff, effect);

pidff_set_duration(&pidff->set_effect[PID_DURATION],
effect->replay.length);
--
2.54.0