|
@@ -2678,7 +2678,13 @@ struct clk *clk_register(struct device *dev, struct clk_hw *hw)
|
|
ret = -ENOMEM;
|
|
ret = -ENOMEM;
|
|
goto fail_name;
|
|
goto fail_name;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (WARN_ON(!hw->init->ops)) {
|
|
|
|
+ ret = -EINVAL;
|
|
|
|
+ goto fail_ops;
|
|
|
|
+ }
|
|
core->ops = hw->init->ops;
|
|
core->ops = hw->init->ops;
|
|
|
|
+
|
|
if (dev && pm_runtime_enabled(dev))
|
|
if (dev && pm_runtime_enabled(dev))
|
|
core->dev = dev;
|
|
core->dev = dev;
|
|
if (dev && dev->driver)
|
|
if (dev && dev->driver)
|
|
@@ -2740,6 +2746,7 @@ fail_parent_names_copy:
|
|
kfree_const(core->parent_names[i]);
|
|
kfree_const(core->parent_names[i]);
|
|
kfree(core->parent_names);
|
|
kfree(core->parent_names);
|
|
fail_parent_names:
|
|
fail_parent_names:
|
|
|
|
+fail_ops:
|
|
kfree_const(core->name);
|
|
kfree_const(core->name);
|
|
fail_name:
|
|
fail_name:
|
|
kfree(core);
|
|
kfree(core);
|