diff mbox series

PM: EM: use kfree_rcu to simplify the code

Message ID 20250218082021.2766-1-lirongqing@baidu.com
State New
Headers show
Series PM: EM: use kfree_rcu to simplify the code | expand

Commit Message

lirongqing Feb. 18, 2025, 8:20 a.m. UTC
From: Li RongQing <lirongqing@baidu.com>

The callback function of call_rcu() just calls kfree(), so use
kfree_rcu() instead of call_rcu() + callback function.

Signed-off-by: Li RongQing <lirongqing@baidu.com>
---
 kernel/power/energy_model.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

Comments

Rafael J. Wysocki Feb. 20, 2025, 7:54 p.m. UTC | #1
On Wed, Feb 19, 2025 at 3:32 PM Lukasz Luba <lukasz.luba@arm.com> wrote:
>
>
>
> On 2/18/25 12:49, Rafael J. Wysocki wrote:
> > +Lukasz Luba
> >
> > On Tue, Feb 18, 2025 at 9:20 AM lirongqing <lirongqing@baidu.com> wrote:
> >>
> >> From: Li RongQing <lirongqing@baidu.com>
> >>
> >> The callback function of call_rcu() just calls kfree(), so use
> >> kfree_rcu() instead of call_rcu() + callback function.
> >>
> >> Signed-off-by: Li RongQing <lirongqing@baidu.com>
> >
> > This looks fine to me.  Lukasz?
>
> Thanks Rafael for letting me know.
>
> >
> >> ---
> >>   kernel/power/energy_model.c | 10 +---------
> >>   1 file changed, 1 insertion(+), 9 deletions(-)
> >>
> >> diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
> >> index 3874f0e..72655ef 100644
> >> --- a/kernel/power/energy_model.c
> >> +++ b/kernel/power/energy_model.c
> >> @@ -161,14 +161,6 @@ static void em_debug_create_pd(struct device *dev) {}
> >>   static void em_debug_remove_pd(struct device *dev) {}
> >>   #endif
> >>
> >> -static void em_destroy_table_rcu(struct rcu_head *rp)
> >> -{
> >> -       struct em_perf_table __rcu *table;
> >> -
> >> -       table = container_of(rp, struct em_perf_table, rcu);
> >> -       kfree(table);
> >> -}
> >> -
> >>   static void em_release_table_kref(struct kref *kref)
> >>   {
> >>          struct em_perf_table __rcu *table;
> >> @@ -176,7 +168,7 @@ static void em_release_table_kref(struct kref *kref)
> >>          /* It was the last owner of this table so we can free */
> >>          table = container_of(kref, struct em_perf_table, kref);
> >>
> >> -       call_rcu(&table->rcu, em_destroy_table_rcu);
> >> +       kfree_rcu(table, rcu);
> >>   }
> >>
> >>   /**
> >> --
> >> 2.9.4
> >>
>
> That should work the same way, nice cleanup.
> Thanks Li!
> LGTM,
>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

Applied as 6.15 material, thanks!
diff mbox series

Patch

diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
index 3874f0e..72655ef 100644
--- a/kernel/power/energy_model.c
+++ b/kernel/power/energy_model.c
@@ -161,14 +161,6 @@  static void em_debug_create_pd(struct device *dev) {}
 static void em_debug_remove_pd(struct device *dev) {}
 #endif
 
-static void em_destroy_table_rcu(struct rcu_head *rp)
-{
-	struct em_perf_table __rcu *table;
-
-	table = container_of(rp, struct em_perf_table, rcu);
-	kfree(table);
-}
-
 static void em_release_table_kref(struct kref *kref)
 {
 	struct em_perf_table __rcu *table;
@@ -176,7 +168,7 @@  static void em_release_table_kref(struct kref *kref)
 	/* It was the last owner of this table so we can free */
 	table = container_of(kref, struct em_perf_table, kref);
 
-	call_rcu(&table->rcu, em_destroy_table_rcu);
+	kfree_rcu(table, rcu);
 }
 
 /**