On 11-08-15, 17:43, Dan Carpenter wrote:
@@ -1323,28 +1323,29 @@ static int _of_init_opp_table_v2(struct device *dev, if (ret) { dev_err(dev, "%s: Failed to add OPP, %d\n", __func__, ret);
break;
} }goto free_table;
/* There should be one of more OPP defined */
- if (WARN_ON(!count))
- if (WARN_ON(!count)) {
goto put_opp_np;ret = -ENOENT;
- }
The purpose of 'count' here is to see if the dtb contained any OPP nodes or not. i.e. if we ever entered the body of for_each_available_child_of_node() or not..
Its different than, "if we were able to add any OPPs";
This is weird to me, because we are going backwards. What happens if we goto free_table without adding anything?
It will WARN() today.
I suspect it's fine, but if it's a bug then this code still has problems.
I don't think we have a bug here, we never added anything and so don't need to free it.
What about if we only increment count when _opp_add_static_v2() succeeds
That's not what we want.