host->mmc->f_min = clk_round_rate(host->cfg_div_clk, 400000);
 
        ret = meson_mmc_clk_set(host, host->mmc->f_min);
-       if (!ret)
+       if (ret)
                clk_disable_unprepare(host->cfg_div_clk);
 
        return ret;
                                        meson_mmc_irq_thread, IRQF_SHARED,
                                        DRIVER_NAME, host);
        if (ret)
-               goto free_host;
+               goto err_div_clk;
 
        mmc->max_blk_count = CMD_CFG_LENGTH_MASK;
        mmc->max_req_size = mmc->max_blk_count * mmc->max_blk_size;
        if (host->bounce_buf == NULL) {
                dev_err(host->dev, "Unable to map allocate DMA bounce buffer.\n");
                ret = -ENOMEM;
-               goto free_host;
+               goto err_div_clk;
        }
 
        mmc->ops = &meson_mmc_ops;
 
        return 0;
 
-free_host:
+err_div_clk:
        clk_disable_unprepare(host->cfg_div_clk);
+free_host:
        clk_disable_unprepare(host->core_clk);
        mmc_free_host(mmc);
        return ret;