drivers/hid/hid-playstation.c | 2 ++ 1 file changed, 2 insertions(+)
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>
---
Compile tested only. Found using static analysis.
drivers/hid/hid-playstation.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/hid/hid-playstation.c b/drivers/hid/hid-playstation.c
index 63f6eb9030d1..128aa6abd10b 100644
--- a/drivers/hid/hid-playstation.c
+++ b/drivers/hid/hid-playstation.c
@@ -1942,6 +1942,7 @@ static int dualshock4_get_calibration_data(struct dualshock4 *ds4)
"Failed to retrieve DualShock4 calibration info: %d\n",
ret);
ret = -EILSEQ;
+ kfree(buf);
goto transfer_failed;
} else {
break;
@@ -1959,6 +1960,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;
}
}
--
2.43.0
On Mon, 10 Nov 2025, Abdun Nihaal wrote:
> 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>
Applied, thanks.
--
Jiri Kosina
SUSE Labs
> 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 Would an additional label become helpful for this function implementation? Regards, Markus
On Mon, Nov 10, 2025 at 06:49:01PM +0100, Markus Elfring wrote: > > 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 > > Would an additional label become helpful for this function implementation? In the function, the code present at the transfer_failed label is shared between normal and error paths, and is not the traditional error path label, that's why I put the kfree for the two cases immediately before the goto. Regards, Nihaal
© 2016 - 2026 Red Hat, Inc.