usb/s3c-hsudc: fix error path
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 3 Jun 2011 17:50:47 +0000 (19:50 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 6 Jun 2011 23:28:03 +0000 (16:28 -0700)
I doubt the clock is optional. In case it is it should not return with
an error code because we leak everything.

Cc: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/s3c-hsudc.c

index 9a1b966..d5e3e1e 100644 (file)
@@ -1302,7 +1302,8 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
        hsudc->uclk = clk_get(&pdev->dev, "usb-device");
        if (IS_ERR(hsudc->uclk)) {
                dev_err(dev, "failed to find usb-device clock source\n");
-               return PTR_ERR(hsudc->uclk);
+               ret = PTR_ERR(hsudc->uclk);
+               goto err_clk;
        }
        clk_enable(hsudc->uclk);
 
@@ -1311,7 +1312,8 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
        disable_irq(hsudc->irq);
        local_irq_enable();
        return 0;
-
+err_clk:
+       free_irq(hsudc->irq, hsudc);
 err_irq:
        iounmap(hsudc->regs);