Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9988440 authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Felipe Balbi
Browse files

usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add udc



This patch fixes an issue that this driver causes panic if a gadget
driver is already loaded because usb_add_gadget_udc() might call
renesas_usb3_start() via .udc_start, and then pm_runtime_get_sync()
in renesas_usb3_start() doesn't work correctly.
Note that the usb3_to_dev() macro should not be called at this timing
because the macro uses the gadget structure.

Fixes: cf06df3f ("usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able()")
Cc: <stable@vger.kernel.org> # v4.15+
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: default avatarSimon Horman <horms+renesas@verge.net.au>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 1990cf7c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2634,6 +2634,7 @@ static int renesas_usb3_probe(struct platform_device *pdev)
	if (ret < 0)
		goto err_alloc_prd;

	pm_runtime_enable(&pdev->dev);
	ret = usb_add_gadget_udc(&pdev->dev, &usb3->gadget);
	if (ret < 0)
		goto err_add_udc;
@@ -2655,7 +2656,6 @@ static int renesas_usb3_probe(struct platform_device *pdev)
	renesas_usb3_debugfs_init(usb3, &pdev->dev);

	dev_info(&pdev->dev, "probed%s\n", usb3->phy ? " with phy" : "");
	pm_runtime_enable(usb3_to_dev(usb3));

	return 0;