• Yongqiang Liu's avatar
    cpufreq: Init completion before kobject_init_and_add() · 5c510548
    Yongqiang Liu authored
    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: 4ebe36c9 ("cpufreq: Fix kobject memleak")
    Signed-off-by: default avatarYongqiang Liu <liuyongqiang13@huawei.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Cc: 5.2+ <stable@vger.kernel.org> # 5.2+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    5c510548
cpufreq.c 76.7 KB