]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
HID: playstation: Fix memory leak in dualshock4_get_calibration_data()
authorAbdun Nihaal <nihaal@cse.iitm.ac.in>
Mon, 10 Nov 2025 17:15:50 +0000 (22:45 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:35:58 +0000 (10:35 +0100)
[ Upstream commit 8513c154f8ad7097653dd9bf43d6155e5aad4ab3 ]

The memory allocated for buf is not freed in the error paths when
ps_get_report() fails. Free buf before jumping to transfer_failed label

Fixes: 947992c7fa9e ("HID: playstation: DS4: Fix calibration workaround for clone devices")
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Silvan Jegen <s.jegen@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/hid/hid-playstation.c

index 1468fb11e39dffc883181663a4ad44252e0a7ebb..657e9ae1be1eeb68b4af7f5c6f5d8390f2b7c86b 100644 (file)
@@ -1807,6 +1807,7 @@ static int dualshock4_get_calibration_data(struct dualshock4 *ds4)
 
                                hid_warn(hdev, "Failed to retrieve DualShock4 calibration info: %d\n", ret);
                                ret = -EILSEQ;
+                               kfree(buf);
                                goto transfer_failed;
                        } else {
                                break;
@@ -1824,6 +1825,7 @@ static int dualshock4_get_calibration_data(struct dualshock4 *ds4)
 
                if (ret) {
                        hid_warn(hdev, "Failed to retrieve DualShock4 calibration info: %d\n", ret);
+                       kfree(buf);
                        goto transfer_failed;
                }
        }