Commit 01af5423 authored by Guangshuo Li's avatar Guangshuo Li Committed by Greg Kroah-Hartman
Browse files

usb: ulpi: fix double free in ulpi_register_interface() error path



When device_register() fails, ulpi_register() calls put_device() on
ulpi->dev.

The device release callback ulpi_dev_release() drops the OF node
reference and frees ulpi, but the current error path in
ulpi_register_interface() then calls kfree(ulpi) again, causing a
double free.

Let put_device() handle the cleanup through ulpi_dev_release() and
avoid freeing ulpi again in ulpi_register_interface().

Fixes: 289fcff4 ("usb: add bus type for USB ULPI")
Cc: stable <stable@kernel.org>
Signed-off-by: default avatarGuangshuo Li <lgs201920130244@gmail.com>
Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://patch.msgid.link/20260401025142.1398996-1-lgs201920130244@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 33cfe070
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -331,10 +331,9 @@ struct ulpi *ulpi_register_interface(struct device *dev,
	ulpi->ops = ops;

	ret = ulpi_register(dev, ulpi);
	if (ret) {
		kfree(ulpi);
	if (ret)
		return ERR_PTR(ret);
	}


	return ulpi;
}