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);
 
                /* 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.
        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;
        }
 
 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;
 }