diff options
author | Daniel Glöckner <dg@emlix.com> | 2009-06-11 09:39:21 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-11 11:51:08 -0400 |
commit | 9f322ad064f9210e7d472dfe77e702274d5c9dba (patch) | |
tree | e7799ca401c1334e9c4bea40b02e7a5b6214a392 /drivers/serial/imx.c | |
parent | 2e1463922a35584c863f71d4021e1e71f76eaed0 (diff) |
imx: serial: handle initialisation failure correctly
correctly de-initialise device when setting up failed,
call to pdata->exit() was missing.
Signed-off-by: Daniel Glöckner <dg@emlix.com>
Signed-off-by: Oskar Schirmer <os@emlix.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial/imx.c')
-rw-r--r-- | drivers/serial/imx.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index e6c2ba26dcbb..cbd4f3224643 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -1157,10 +1157,15 @@ static int serial_imx_probe(struct platform_device *pdev) | |||
1157 | goto clkput; | 1157 | goto clkput; |
1158 | } | 1158 | } |
1159 | 1159 | ||
1160 | uart_add_one_port(&imx_reg, &sport->port); | 1160 | ret = uart_add_one_port(&imx_reg, &sport->port); |
1161 | if (ret) | ||
1162 | goto deinit; | ||
1161 | platform_set_drvdata(pdev, &sport->port); | 1163 | platform_set_drvdata(pdev, &sport->port); |
1162 | 1164 | ||
1163 | return 0; | 1165 | return 0; |
1166 | deinit: | ||
1167 | if (pdata->exit) | ||
1168 | pdata->exit(pdev); | ||
1164 | clkput: | 1169 | clkput: |
1165 | clk_put(sport->clk); | 1170 | clk_put(sport->clk); |
1166 | clk_disable(sport->clk); | 1171 | clk_disable(sport->clk); |