Message ID | 20250218082021.2766-1-lirongqing@baidu.com (mailing list archive) |
---|---|
State | Queued |
Delegated to: | Rafael Wysocki |
Headers | show |
Series | PM: EM: use kfree_rcu to simplify the code | expand |
+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? > --- > 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 >
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>
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 --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); } /**