Messages in this thread |  | | Date | Tue, 5 May 2026 09:06:21 +0530 | | From | Viresh Kumar <> | | Subject | Re: [PATCH] pm/opp: fix race between opp_add and opp_get |
| |
On 27-04-26, 20:00, Xuewen Yan wrote: > From: Di Shen <di.shen@unisoc.com> > > There is a race between opp_table_find_key and dev_pm_opp_add_dynamic: > > dev_pm_opp_add_dynamic dev_pm_opp_find_freq_exact > _opp_add_v1 _find_key > _opp_add _opp_table_find_key > mutex_lock(opp_table->lock) > list_add(&new_opp->node, head) > mutex_unlock(opp_table->lock) > mutex_lock(opp_table->lock) > dev_pm_opp_get(opp) > kref_get(&opp->kref) > refcount_inc(&kref->refcount); > mutex_unlock(opp_table->lock) > kref_init(&new_opp->kref) > refcount_set(&kref->refcount, 1); > dev_pm_opp_put() > kref_put_mutex() > > This would cause the opp be freed. > > So use the mutex to protect opp's ref count. > > Co-developed-by: Ling Xu <ling_ling.xu@unisoc.com> > Signed-off-by: Ling Xu <ling_ling.xu@unisoc.com> > Signed-off-by: Di Shen <di.shen@unisoc.com> > --- > drivers/opp/core.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-)
Good catch.
Applied. Thanks.
-- viresh
|  |