On 09-01-17, 15:36, Stephen Boyd wrote:
On 12/07, Viresh Kumar wrote:
@@ -894,8 +895,36 @@ static void _kfree_device_rcu(struct rcu_head *head) kfree_rcu(opp_table, rcu_head); } -static void _free_opp_table(struct opp_table *opp_table) +void _get_opp_table_kref(struct opp_table *opp_table) {
- kref_get(&opp_table->kref);
+}
+struct opp_table *dev_pm_opp_get_opp_table(struct device *dev) +{
- struct opp_table *opp_table;
- /* Hold our table modification lock here */
- mutex_lock(&opp_table_lock);
- opp_table = _find_opp_table(dev);
- if (!IS_ERR(opp_table)) {
_get_opp_table_kref(opp_table);
It seems odd to have _get_opp_table_kref() take a pointer to increment a kref on.
This function is provided for better readability and passing opp_table to it is the only option I had :)
It would be better to have _find_opp_table() return the pointer with the reference already taken so that we don't have to update callers with reference grabbing calls. Typically if a function returns a reference counted pointer the reference counting has already been done.
Absolutely, but that happens with later patches in the series. I couldn't have done it now, as something or the other would have broken.