This will be used from multiple places later. Lets create a separate
routine for that.

Reviewed-by: Stephen Boyd <[email protected]>
Reviewed-by: Bartlomiej Zolnierkiewicz <[email protected]>
Signed-off-by: Viresh Kumar <[email protected]>
---
 drivers/base/power/opp.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c
index 8c3fd57975fb..7895fdd64192 100644
--- a/drivers/base/power/opp.c
+++ b/drivers/base/power/opp.c
@@ -449,6 +449,22 @@ static void _kfree_device_rcu(struct rcu_head *head)
 }
 
 /**
+ * _remove_device_opp() - Removes a device OPP table
+ * @dev_opp: device OPP table to be removed.
+ *
+ * Removes/frees device OPP table it it doesn't contain any OPPs.
+ */
+static void _remove_device_opp(struct device_opp *dev_opp)
+{
+       if (!list_empty(&dev_opp->opp_list))
+               return;
+
+       list_del_rcu(&dev_opp->node);
+       call_srcu(&dev_opp->srcu_head.srcu, &dev_opp->rcu_head,
+                 _kfree_device_rcu);
+}
+
+/**
  * _kfree_opp_rcu() - Free OPP RCU handler
  * @head:      RCU head
  */
@@ -481,11 +497,7 @@ static void _opp_remove(struct device_opp *dev_opp,
        list_del_rcu(&opp->node);
        call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, _kfree_opp_rcu);
 
-       if (list_empty(&dev_opp->opp_list)) {
-               list_del_rcu(&dev_opp->node);
-               call_srcu(&dev_opp->srcu_head.srcu, &dev_opp->rcu_head,
-                         _kfree_device_rcu);
-       }
+       _remove_device_opp(dev_opp);
 }
 
 /**
-- 
2.4.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to