提交 ada80043 编写于 作者: F Fabrice Gasnier 提交者: Greg Kroah-Hartman

serial: stm32: fix error handling in probe

Disable clock properly in case of error.
Signed-off-by: NFabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: NBich Hemon <bich.hemon@st.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 35abe98f
......@@ -678,8 +678,10 @@ static int stm32_init_port(struct stm32_port *stm32port,
return ret;
stm32port->port.uartclk = clk_get_rate(stm32port->clk);
if (!stm32port->port.uartclk)
if (!stm32port->port.uartclk) {
clk_disable_unprepare(stm32port->clk);
ret = -EINVAL;
}
return ret;
}
......@@ -865,7 +867,7 @@ static int stm32_serial_probe(struct platform_device *pdev)
ret = uart_add_one_port(&stm32_usart_driver, &stm32port->port);
if (ret)
return ret;
goto err_uninit;
ret = stm32_of_dma_rx_probe(stm32port, pdev);
if (ret)
......@@ -878,6 +880,11 @@ static int stm32_serial_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, &stm32port->port);
return 0;
err_uninit:
clk_disable_unprepare(stm32port->clk);
return ret;
}
static int stm32_serial_remove(struct platform_device *pdev)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册