Bluetooth: btmtkuart: Improve exception handling in btmtuart_probe()
[ Upstream commit5.4-rM2-2.2.x-imx-squashed4803c54ca2
] Calls of the functions clk_disable_unprepare() and hci_free_dev() were missing for the exception handling. Thus add the missed function calls together with corresponding jump targets. Fixes:055825614c
("Bluetooth: btmtkuart: add an implementation for clock osc property") Signed-off-by: Chuhong Yuan <hslester96@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
parent
2daf747c28
commit
999b59be5d
|
@ -1015,7 +1015,7 @@ static int btmtkuart_probe(struct serdev_device *serdev)
|
|||
if (btmtkuart_is_standalone(bdev)) {
|
||||
err = clk_prepare_enable(bdev->osc);
|
||||
if (err < 0)
|
||||
return err;
|
||||
goto err_hci_free_dev;
|
||||
|
||||
if (bdev->boot) {
|
||||
gpiod_set_value_cansleep(bdev->boot, 1);
|
||||
|
@ -1028,10 +1028,8 @@ static int btmtkuart_probe(struct serdev_device *serdev)
|
|||
|
||||
/* Power on */
|
||||
err = regulator_enable(bdev->vcc);
|
||||
if (err < 0) {
|
||||
clk_disable_unprepare(bdev->osc);
|
||||
return err;
|
||||
}
|
||||
if (err < 0)
|
||||
goto err_clk_disable_unprepare;
|
||||
|
||||
/* Reset if the reset-gpios is available otherwise the board
|
||||
* -level design should be guaranteed.
|
||||
|
@ -1063,7 +1061,6 @@ static int btmtkuart_probe(struct serdev_device *serdev)
|
|||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
dev_err(&serdev->dev, "Can't register HCI device\n");
|
||||
hci_free_dev(hdev);
|
||||
goto err_regulator_disable;
|
||||
}
|
||||
|
||||
|
@ -1072,6 +1069,11 @@ static int btmtkuart_probe(struct serdev_device *serdev)
|
|||
err_regulator_disable:
|
||||
if (btmtkuart_is_standalone(bdev))
|
||||
regulator_disable(bdev->vcc);
|
||||
err_clk_disable_unprepare:
|
||||
if (btmtkuart_is_standalone(bdev))
|
||||
clk_disable_unprepare(bdev->osc);
|
||||
err_hci_free_dev:
|
||||
hci_free_dev(hdev);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue