linux-stable/drivers/cpufreq
Yongqiang Liu d88540acfc cpufreq: Init completion before kobject_init_and_add()
commit 5c51054896 upstream.

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: 4ebe36c94a ("cpufreq: Fix kobject memleak")
Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: 5.2+ <stable@vger.kernel.org> # 5.2+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-01-07 11:15:46 +01:00
..
Kconfig cpufreq: loongson2: fix Kconfig "its" grammar 2022-07-25 20:34:56 +02:00
Kconfig.arm cpufreq: mediatek-hw: Add support for CPUFREQ HW 2021-09-06 15:15:19 +05:30
Kconfig.powerpc
Kconfig.x86 cpufreq: amd-pstate: change amd-pstate driver to be built-in type 2022-12-02 17:43:07 +01:00
Makefile cpufreq: amd-pstate: Add trace for AMD P-State module 2021-12-30 18:51:39 +01:00
acpi-cpufreq.c cpufreq: ACPI: Add Zhaoxin/Centaur turbo boost control interface support 2022-06-29 20:14:39 +02:00
amd-pstate-trace.c cpufreq: amd-pstate: Add trace for AMD P-State module 2021-12-30 18:51:39 +01:00
amd-pstate-trace.h cpufreq: amd-pstate: Add more tracepoint for AMD P-State module 2022-03-09 19:53:01 +01:00
amd-pstate.c cpufreq: amd-pstate: cpufreq: amd-pstate: reset MSR_AMD_PERF_CTL register at init 2022-12-02 17:43:11 +01:00
amd_freq_sensitivity.c cpufreq: amd_freq_sensitivity: Add missing pci_dev_put() 2022-12-31 13:25:45 +01:00
armada-8k-cpufreq.c cpufreq: ap806: Add missing MODULE_DEVICE_TABLE 2020-12-07 13:02:37 +05:30
armada-37xx-cpufreq.c cpufreq: armada-37xx: forbid cpufreq for 1.2 GHz variant 2021-08-09 09:31:22 +05:30
bmips-cpufreq.c
brcmstb-avs-cpufreq.c cpufreq: brcmstb-avs-cpufreq: Fix resource leaks in ->remove() 2021-01-18 12:23:43 +05:30
cppc_cpufreq.c cpufreq: CPPC: Fix unused-function warning 2022-05-30 15:33:42 +02:00
cpufreq-dt-platdev.c cpufreq: Add MT8186 to cpufreq-dt-platdev blocklist 2022-06-28 13:34:56 +05:30
cpufreq-dt.c OPP: Migrate set-regulators API to use set-config helpers 2022-07-08 11:27:33 +05:30
cpufreq-dt.h
cpufreq-nforce2.c
cpufreq.c cpufreq: Init completion before kobject_init_and_add() 2023-01-07 11:15:46 +01:00
cpufreq_conservative.c cpufreq: unify show() and store() naming and use __ATTR_XX 2022-03-10 19:55:05 +01:00
cpufreq_governor.c cpufreq: governor: Use kobject release() method to free dbs_data 2022-04-13 15:22:41 +02:00
cpufreq_governor.h cpufreq: governor: Use kobject release() method to free dbs_data 2022-04-13 15:22:41 +02:00
cpufreq_governor_attr_set.c cpufreq: Move to_gov_attr_set() to cpufreq.h 2022-02-04 19:22:34 +01:00
cpufreq_ondemand.c cpufreq: ondemand: Use cpumask_var_t for on-stack cpu mask 2022-07-25 20:38:01 +02:00
cpufreq_ondemand.h
cpufreq_performance.c cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET 2020-11-10 18:31:17 +01:00
cpufreq_powersave.c cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET 2020-11-10 18:31:17 +01:00
cpufreq_stats.c cpufreq: stats: Clean up local variable in cpufreq_stats_create_table() 2021-06-07 13:47:57 +02:00
cpufreq_userspace.c cpufreq: Register governors at core_initcall 2020-07-02 13:03:30 +02:00
davinci-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
e_powersaver.c cpufreq: e_powersaver: remove unreachable break 2020-10-27 18:42:54 +01:00
elanfreq.c
freq_table.c cpufreq: Fix scaling_{available,boost}_frequencies_show() comments 2021-03-26 17:43:48 +01:00
gx-suspmod.c
highbank-cpufreq.c cpufreq: highbank: Add missing MODULE_DEVICE_TABLE 2020-12-07 13:02:37 +05:30
ia64-acpi-cpufreq.c ia64: fix format string for ia64-acpi-cpu-freq 2021-03-19 17:26:20 +01:00
imx-cpufreq-dt.c OPP: Migrate set-supported-hw API to use set-config helpers 2022-07-08 11:27:48 +05:30
imx6q-cpufreq.c cpufreq: imx6q: Use .register_em() to register with energy model 2021-08-12 09:54:07 +05:30
intel_pstate.c cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores 2022-11-04 00:00:20 +09:00
kirkwood-cpufreq.c
longhaul.c cpufreq: longhaul: Replace acpi_bus_get_device() 2022-02-04 19:31:49 +01:00
longhaul.h
longrun.c
loongson1-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
loongson2_cpufreq.c cpufreq: loongson2: Remove unused linux/sched.h headers 2021-06-07 17:43:52 +02:00
maple-cpufreq.c
mediatek-cpufreq-hw.c PM: EM: convert power field to micro-Watts precision and align drivers 2022-07-15 19:17:30 +02:00
mediatek-cpufreq.c cpufreq: mediatek: fix error return code in mtk_cpu_dvfs_info_init() 2022-07-13 16:53:00 +05:30
mvebu-cpufreq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
omap-cpufreq.c cpufreq: omap: Use .register_em() to register with energy model 2021-08-12 09:54:07 +05:30
p4-clockmod.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
pasemi-cpufreq.c cpufreq: Prepare cleanup of powerpc's asm/prom.h 2022-04-13 17:18:45 +02:00
pcc-cpufreq.c cpufreq: pcc-cpufreq: Mark sometimes used ID structs as __maybe_unused 2020-07-15 15:17:06 +02:00
pmac32-cpufreq.c cpufreq: pmac32-cpufreq: Fix refcount leak bug 2022-06-28 13:34:51 +05:30
pmac64-cpufreq.c cpufreq: Prepare cleanup of powerpc's asm/prom.h 2022-04-13 17:18:45 +02:00
powernow-k6.c
powernow-k7.c
powernow-k7.h
powernow-k8.c cpufreq: powernow-k8: Re-order the init checks 2022-03-17 14:54:11 +01:00
powernow-k8.h
powernv-cpufreq.c cpufreq: Introducing CPUFREQ_RELATION_E 2021-10-05 16:33:05 +02:00
ppc_cbe_cpufreq.c cpufreq: Prepare cleanup of powerpc's asm/prom.h 2022-04-13 17:18:45 +02:00
ppc_cbe_cpufreq.h
ppc_cbe_cpufreq_pervasive.c
ppc_cbe_cpufreq_pmi.c cpufreq: Prepare cleanup of powerpc's asm/prom.h 2022-04-13 17:18:45 +02:00
pxa2xx-cpufreq.c cpufreq: pxa3: move clk register access to clk driver 2022-05-07 22:55:49 +02:00
pxa3xx-cpufreq.c cpufreq: pxa3: move clk register access to clk driver 2022-05-07 22:55:49 +02:00
qcom-cpufreq-hw.c cpufreq: qcom-hw: Fix the frequency returned by cpufreq_driver->get() 2022-12-31 13:25:43 +01:00
qcom-cpufreq-nvmem.c cpufreq: qcom: fix memory leak in error path 2022-10-29 10:08:30 +02:00
qoriq-cpufreq.c drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c 2022-06-28 13:34:45 +05:30
raspberrypi-cpufreq.c
s3c24xx-cpufreq-debugfs.c ARM: s3c: remove cpufreq header dependencies 2020-08-20 17:52:05 +02:00
s3c24xx-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
s3c64xx-cpufreq.c
s3c2410-cpufreq.c cpufreq: s3c24xx: move low-level clk reg access into platform code 2020-08-20 17:53:22 +02:00
s3c2412-cpufreq.c cpufreq: s3c24xx: move low-level clk reg access into platform code 2020-08-20 17:53:22 +02:00
s3c2416-cpufreq.c
s3c2440-cpufreq.c cpufreq: s3c244x: add fallthrough comments for switch 2021-10-04 11:43:14 +05:30
s5pv210-cpufreq.c cpufreq: Introducing CPUFREQ_RELATION_E 2021-10-05 16:33:05 +02:00
sa1100-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
sa1110-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
sc520_freq.c cpufreq: sc520_freq: add 'fallthrough' to one case 2021-05-21 18:52:13 +02:00
scmi-cpufreq.c cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1 2022-07-15 19:17:30 +02:00
scpi-cpufreq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_320.RULE 2022-06-10 14:51:36 +02:00
sh-cpufreq.c cpufreq: sh: Remove sh_cpufreq_cpu_ready() 2021-09-02 18:04:17 +02:00
sparc-us2e-cpufreq.c
sparc-us3-cpufreq.c
spear-cpufreq.c cpufreq: Remove CPUFREQ_STICKY flag 2021-02-04 19:23:20 +01:00
speedstep-centrino.c
speedstep-ich.c
speedstep-lib.c cpufreq: speedstep: remove unneeded semicolon 2020-10-28 18:04:07 +01:00
speedstep-lib.h
speedstep-smi.c
sti-cpufreq.c cpufreq: sti: Migrate to dev_pm_opp_set_config() 2022-07-08 11:27:32 +05:30
sun50i-cpufreq-nvmem.c OPP: Migrate set-prop-name helper API to use set-config helpers 2022-07-08 11:27:49 +05:30
tegra20-cpufreq.c OPP: Migrate set-supported-hw API to use set-config helpers 2022-07-08 11:27:48 +05:30
tegra124-cpufreq.c
tegra186-cpufreq.c cpufreq: tegra186/tegra194: Handle errors in BPMP response 2021-10-04 12:31:36 +05:30
tegra194-cpufreq.c cpufreq: tegra194: Fix module loading 2022-10-29 10:08:30 +02:00
ti-cpufreq.c cpufreq: ti: Migrate to dev_pm_opp_set_config() 2022-07-08 11:27:32 +05:30
vexpress-spc-cpufreq.c cpufreq: vexpress: Drop unused variable 2021-10-04 11:25:21 +05:30