|
@@ -75,6 +75,11 @@ int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
|
|
|
goto err_clk_unreg;
|
|
|
|
|
|
reset = kzalloc(sizeof(*reset), GFP_KERNEL);
|
|
|
+ if (!reset) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto err_alloc_reset;
|
|
|
+ }
|
|
|
+
|
|
|
reset->rcdev.of_node = node;
|
|
|
reset->rcdev.ops = &ccu_reset_ops;
|
|
|
reset->rcdev.owner = THIS_MODULE;
|
|
@@ -90,6 +95,16 @@ int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
|
|
|
return 0;
|
|
|
|
|
|
err_of_clk_unreg:
|
|
|
+ kfree(reset);
|
|
|
+err_alloc_reset:
|
|
|
+ of_clk_del_provider(node);
|
|
|
err_clk_unreg:
|
|
|
+ while (--i >= 0) {
|
|
|
+ struct clk_hw *hw = desc->hw_clks->hws[i];
|
|
|
+
|
|
|
+ if (!hw)
|
|
|
+ continue;
|
|
|
+ clk_hw_unregister(hw);
|
|
|
+ }
|
|
|
return ret;
|
|
|
}
|