usb: gadget: udc-xilinx: Fix an error handling path in 'xudc_probe()'
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 7 Nov 2021 16:25:48 +0000 (17:25 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Nov 2021 14:02:34 +0000 (15:02 +0100)
A successful 'clk_prepare_enable()' call should be balanced by a
corresponding 'clk_disable_unprepare()' call in the error handling path
of the probe, as already done in the remove function.

Fixes: 24749229211c ("usb: gadget: udc-xilinx: Add clock support")
Reviewed-by: Shubhrajyoti Datta <shubhraj@xilinx.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/ec61a89b83ce34b53a3bdaacfd1413a9869cc608.1636302246.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/udc/udc-xilinx.c

index f5ca670..857159d 100644 (file)
@@ -2136,7 +2136,7 @@ static int xudc_probe(struct platform_device *pdev)
 
        ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
        if (ret)
-               goto fail;
+               goto err_disable_unprepare_clk;
 
        udc->dev = &udc->gadget.dev;
 
@@ -2155,6 +2155,9 @@ static int xudc_probe(struct platform_device *pdev)
                 udc->dma_enabled ? "with DMA" : "without DMA");
 
        return 0;
+
+err_disable_unprepare_clk:
+       clk_disable_unprepare(udc->clk);
 fail:
        dev_err(&pdev->dev, "probe failed, %d\n", ret);
        return ret;