Commit 9feefbf5 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: dwc3: qcom: fix software node leak on probe errors



Make sure to remove the software node also on (ACPI) probe errors to
avoid leaking the underlying resources.

Note that the software node is only used for ACPI probe so the driver
unbind tear down is updated to match probe.

Fixes: 8dc6e6dd ("usb: dwc3: qcom: Constify the software node")
Cc: stable@vger.kernel.org      # 5.12
Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarJohan Hovold <johan+linaro@kernel.org>
Acked-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: default avatarAndrew Halaney <ahalaney@redhat.com>
Link: https://lore.kernel.org/r/20231117173650.21161-3-johan+linaro@kernel.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 51392a18
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -928,10 +928,12 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
interconnect_exit:
	dwc3_qcom_interconnect_exit(qcom);
depopulate:
	if (np)
	if (np) {
		of_platform_depopulate(&pdev->dev);
	else
	} else {
		device_remove_software_node(&qcom->dwc3->dev);
		platform_device_del(qcom->dwc3);
	}
	platform_device_put(qcom->dwc3);
clk_disable:
	for (i = qcom->num_clocks - 1; i >= 0; i--) {
@@ -951,11 +953,12 @@ static void dwc3_qcom_remove(struct platform_device *pdev)
	struct device *dev = &pdev->dev;
	int i;

	device_remove_software_node(&qcom->dwc3->dev);
	if (np)
	if (np) {
		of_platform_depopulate(&pdev->dev);
	else
	} else {
		device_remove_software_node(&qcom->dwc3->dev);
		platform_device_del(qcom->dwc3);
	}
	platform_device_put(qcom->dwc3);

	for (i = qcom->num_clocks - 1; i >= 0; i--) {