diff --git a/[refs] b/[refs] index 44676087ab81..c5c5e9b93359 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a9b0623357d2faa49a0f862154ba36c42c4bad2b +refs/heads/master: c45e7d7be891fe94e13d0e7aeee3e0e4ee7118f4 diff --git a/trunk/drivers/serial/imx.c b/trunk/drivers/serial/imx.c index 6a29f9330a73..20189c447e92 100644 --- a/trunk/drivers/serial/imx.c +++ b/trunk/drivers/serial/imx.c @@ -1133,13 +1133,19 @@ static int serial_imx_probe(struct platform_device *pdev) if(pdata && (pdata->flags & IMXUART_HAVE_RTSCTS)) sport->have_rtscts = 1; - if (pdata->init) - pdata->init(pdev); + if (pdata->init) { + ret = pdata->init(pdev); + if (ret) + goto clkput; + } uart_add_one_port(&imx_reg, &sport->port); platform_set_drvdata(pdev, &sport->port); return 0; +clkput: + clk_put(sport->clk); + clk_disable(sport->clk); unmap: iounmap(sport->port.membase); free: