|
|
@@ -367,8 +367,10 @@ int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
|
|
|
num_dividers = i;
|
|
|
|
|
|
tmp = kcalloc(valid_div + 1, sizeof(*tmp), GFP_KERNEL);
|
|
|
- if (!tmp)
|
|
|
+ if (!tmp) {
|
|
|
+ *table = ERR_PTR(-ENOMEM);
|
|
|
return -ENOMEM;
|
|
|
+ }
|
|
|
|
|
|
valid_div = 0;
|
|
|
*width = 0;
|
|
|
@@ -403,6 +405,7 @@ struct clk_hw *ti_clk_build_component_div(struct ti_clk_divider *setup)
|
|
|
{
|
|
|
struct clk_omap_divider *div;
|
|
|
struct clk_omap_reg *reg;
|
|
|
+ int ret;
|
|
|
|
|
|
if (!setup)
|
|
|
return NULL;
|
|
|
@@ -422,6 +425,12 @@ struct clk_hw *ti_clk_build_component_div(struct ti_clk_divider *setup)
|
|
|
div->flags |= CLK_DIVIDER_POWER_OF_TWO;
|
|
|
|
|
|
div->table = _get_div_table_from_setup(setup, &div->width);
|
|
|
+ if (IS_ERR(div->table)) {
|
|
|
+ ret = PTR_ERR(div->table);
|
|
|
+ kfree(div);
|
|
|
+ return ERR_PTR(ret);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
div->shift = setup->bit_shift;
|
|
|
div->latch = -EINVAL;
|