diff options
Diffstat (limited to 'drivers/usb/dwc3/dwc3-st.c')
| -rw-r--r-- | drivers/usb/dwc3/dwc3-st.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/dwc3/dwc3-st.c b/drivers/usb/dwc3/dwc3-st.c index 16081383c401..c682420f25ca 100644 --- a/drivers/usb/dwc3/dwc3-st.c +++ b/drivers/usb/dwc3/dwc3-st.c @@ -255,24 +255,26 @@ static int st_dwc3_probe(struct platform_device *pdev)  	if (!child) {  		dev_err(&pdev->dev, "failed to find dwc3 core node\n");  		ret = -ENODEV; -		goto undo_softreset; +		goto err_node_put;  	}  	/* Allocate and initialize the core */  	ret = of_platform_populate(node, NULL, NULL, dev);  	if (ret) {  		dev_err(dev, "failed to add dwc3 core\n"); -		goto undo_softreset; +		goto err_node_put;  	}  	child_pdev = of_find_device_by_node(child);  	if (!child_pdev) {  		dev_err(dev, "failed to find dwc3 core device\n");  		ret = -ENODEV; -		goto undo_softreset; +		goto err_node_put;  	}  	dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev); +	of_node_put(child); +	of_dev_put(child_pdev);  	/*  	 * Configure the USB port as device or host according to the static @@ -292,6 +294,8 @@ static int st_dwc3_probe(struct platform_device *pdev)  	platform_set_drvdata(pdev, dwc3_data);  	return 0; +err_node_put: +	of_node_put(child);  undo_softreset:  	reset_control_assert(dwc3_data->rstc_rst);  undo_powerdown:  |