300000000);
        if (IS_ERR(rtc->int_osc)) {
                pr_crit("Couldn't register the internal oscillator\n");
-               return;
+               goto err;
        }
 
        parents[0] = clk_hw_get_name(rtc->int_osc);
        rtc->losc = clk_register(NULL, &rtc->hw);
        if (IS_ERR(rtc->losc)) {
                pr_crit("Couldn't register the LOSC clock\n");
-               return;
+               goto err_register;
        }
 
        of_property_read_string_index(node, "clock-output-names", 1,
                                          &rtc->lock);
        if (IS_ERR(rtc->ext_losc)) {
                pr_crit("Couldn't register the LOSC external gate\n");
-               return;
+               goto err_register;
        }
 
        clk_data->num = 2;
        of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
        return;
 
+err_register:
+       clk_hw_unregister_fixed_rate(rtc->int_osc);
 err:
        kfree(clk_data);
 }