mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-26 22:24:09 +08:00
serial: stm32: fix error handling in probe
Disable clock properly in case of error. Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com> Signed-off-by: Bich Hemon <bich.hemon@st.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
35abe98f15
commit
ada8004374
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user