Messages in this thread | | | Date | Mon, 14 Nov 2022 08:53:01 +0530 | From | Viresh Kumar <> | Subject | Re: [PATCH] cpufreq: Init completion before kobject_init_and_add() |
| |
On 10-11-22, 14:23, Yongqiang Liu wrote: > In cpufreq_policy_alloc(), it will call uninitialed completion in > cpufreq_sysfs_release() when kobject_init_and_add() fails. And > that will cause a crash such as the following page fault in complete: > > BUG: unable to handle page fault for address: fffffffffffffff8 > [..] > RIP: 0010:complete+0x98/0x1f0 > [..] > Call Trace: > kobject_put+0x1be/0x4c0 > cpufreq_online.cold+0xee/0x1fd > cpufreq_add_dev+0x183/0x1e0 > subsys_interface_register+0x3f5/0x4e0 > cpufreq_register_driver+0x3b7/0x670 > acpi_cpufreq_init+0x56c/0x1000 [acpi_cpufreq] > do_one_initcall+0x13d/0x780 > do_init_module+0x1c3/0x630 > load_module+0x6e67/0x73b0 > __do_sys_finit_module+0x181/0x240 > do_syscall_64+0x35/0x80 > entry_SYSCALL_64_after_hwframe+0x63/0xcd > > Fixes: 4ebe36c94aed ("cpufreq: Fix kobject memleak") > Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com> > --- > drivers/cpufreq/cpufreq.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > index 69b3d61852ac..7e56a42750ea 100644 > --- a/drivers/cpufreq/cpufreq.c > +++ b/drivers/cpufreq/cpufreq.c > @@ -1207,6 +1207,7 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu) > if (!zalloc_cpumask_var(&policy->real_cpus, GFP_KERNEL)) > goto err_free_rcpumask; > > + init_completion(&policy->kobj_unregister); > ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq, > cpufreq_global_kobject, "policy%u", cpu); > if (ret) { > @@ -1245,7 +1246,6 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu) > init_rwsem(&policy->rwsem); > spin_lock_init(&policy->transition_lock); > init_waitqueue_head(&policy->transition_wait); > - init_completion(&policy->kobj_unregister); > INIT_WORK(&policy->update, handle_update); > > policy->cpu = cpu;
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-- viresh
| |