Skip to content

Commit be2c1d8

Browse files
outman119gregkh
authored andcommitted
usb: ulpi: fix memory leak on ulpi_register() error paths
commit 0b9fcab upstream. Commit 01af542 ("usb: ulpi: fix double free in ulpi_register_interface() error path") removed kfree(ulpi) from ulpi_register_interface() to fix a double-free when device_register() fails. But when ulpi_of_register() or ulpi_read_id() fail before device_register() is called, the ulpi allocation is leaked. Add kfree(ulpi) on both error paths to properly clean up the allocation. Fixes: 01af542 ("usb: ulpi: fix double free in ulpi_register_interface() error path") Cc: stable <stable@kernel.org> Signed-off-by: Felix Gu <ustc.gu@gmail.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://patch.msgid.link/20260407-ulpi-v1-1-f3fafe53f7b2@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 0a4f1ca commit be2c1d8

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

drivers/usb/common/ulpi.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,12 +286,15 @@ static int ulpi_register(struct device *dev, struct ulpi *ulpi)
286286
ACPI_COMPANION_SET(&ulpi->dev, ACPI_COMPANION(dev));
287287

288288
ret = ulpi_of_register(ulpi);
289-
if (ret)
289+
if (ret) {
290+
kfree(ulpi);
290291
return ret;
292+
}
291293

292294
ret = ulpi_read_id(ulpi);
293295
if (ret) {
294296
of_node_put(ulpi->dev.of_node);
297+
kfree(ulpi);
295298
return ret;
296299
}
297300

0 commit comments

Comments
 (0)