James Morse
e2370e1935
cpufreq: schedutil: Destroy mutex before kobject_put() frees the memory
[ Upstream commit cdef1196608892b9a46caa5f2b64095a7f0be60c ]
Since commit e5c6b312ce3c ("cpufreq: schedutil: Use kobject release()
method to free sugov_tunables") kobject_put() has kfree()d the
attr_set before gov_attr_set_put() returns.
kobject_put() isn't the last user of attr_set in gov_attr_set_put(),
the subsequent mutex_destroy() triggers a use-after-free:
| BUG: KASAN: use-after-free in mutex_is_locked+0x20/0x60
| Read of size 8 at addr ffff000800ca4250 by task cpuhp/2/20
|
| CPU: 2 PID: 20 Comm: cpuhp/2 Not tainted 5.15.0-rc1 #12369
| Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development
| Platform, BIOS EDK II Jul 30 2018
| Call trace:
| dump_backtrace+0x0/0x380
| show_stack+0x1c/0x30
| dump_stack_lvl+0x8c/0xb8
| print_address_description.constprop.0+0x74/0x2b8
| kasan_report+0x1f4/0x210
| kasan_check_range+0xfc/0x1a4
| __kasan_check_read+0x38/0x60
| mutex_is_locked+0x20/0x60
| mutex_destroy+0x80/0x100
| gov_attr_set_put+0xfc/0x150
| sugov_exit+0x78/0x190
| cpufreq_offline.isra.0+0x2c0/0x660
| cpuhp_cpufreq_offline+0x14/0x24
| cpuhp_invoke_callback+0x430/0x6d0
| cpuhp_thread_fun+0x1b0/0x624
| smpboot_thread_fn+0x5e0/0xa6c
| kthread+0x3a0/0x450
| ret_from_fork+0x10/0x20
Swap the order of the calls.
Fixes: e5c6b312ce3c ("cpufreq: schedutil: Use kobject release() method to free sugov_tunables")
Cc: 4.7+ <stable@vger.kernel.org> # 4.7+
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
2021-10-06 15:42:30 +02:00 |
| .. |
|
acpi-cpufreq.c
|
acpi-cpufreq: Honor _PSD table setting on new AMD CPUs
|
2020-11-05 11:43:25 +01:00 |
|
amd_freq_sensitivity.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
arm_big_little.c
|
cpufreq: arm_big_little: Register an Energy Model
|
2019-02-07 09:55:11 +05:30 |
|
arm_big_little.h
|
|
|
|
armada-8k-cpufreq.c
|
cpufreq: ap806: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:19 +01:00 |
|
armada-37xx-cpufreq.c
|
cpufreq: armada-37xx: forbid cpufreq for 1.2 GHz variant
|
2021-08-26 08:36:16 -04:00 |
|
bmips-cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
brcmstb-avs-cpufreq.c
|
cpufreq: brcmstb-avs-cpufreq: Fix resource leaks in ->remove()
|
2021-03-04 10:26:14 +01:00 |
|
cppc_cpufreq.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
cpufreq-dt-platdev.c
|
cpufreq: blacklist Arm Vexpress platforms in cpufreq-dt-platdev
|
2021-03-30 14:35:21 +02:00 |
|
cpufreq-dt.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq-dt.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq-nforce2.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
cpufreq.c
|
cpufreq: Make cpufreq_online() call driver->offline() on errors
|
2021-07-14 16:53:25 +02:00 |
|
cpufreq_conservative.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_governor.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_governor.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_governor_attr_set.c
|
cpufreq: schedutil: Destroy mutex before kobject_put() frees the memory
|
2021-10-06 15:42:30 +02:00 |
|
cpufreq_ondemand.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_ondemand.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_performance.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_powersave.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_stats.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cpufreq_userspace.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
davinci-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
e_powersaver.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
elanfreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
freq_table.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
gx-suspmod.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
highbank-cpufreq.c
|
cpufreq: highbank: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:19 +01:00 |
|
ia64-acpi-cpufreq.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
imx-cpufreq-dt.c
|
cpufreq: imx-cpufreq-dt: Correct i.MX8MN's default speed grade value
|
2019-12-13 08:43:28 +01:00 |
|
imx6q-cpufreq.c
|
cpufreq: imx6q: fix error handling
|
2020-04-17 10:50:03 +02:00 |
|
intel_pstate.c
|
cpufreq: intel_pstate: Get per-CPU max freq via MSR_HWP_CAPABILITIES if available
|
2021-03-04 10:26:50 +01:00 |
|
Kconfig
|
treewide: Add SPDX license identifier - Makefile/Kconfig
|
2019-05-21 10:50:46 +02:00 |
|
Kconfig.arm
|
cpufreq: ap806: fix cpufreq driver needs ap cpu clk
|
2020-08-19 08:16:18 +02:00 |
|
Kconfig.powerpc
|
treewide: Add SPDX license identifier - Makefile/Kconfig
|
2019-05-21 10:50:46 +02:00 |
|
Kconfig.x86
|
treewide: Add SPDX license identifier - Makefile/Kconfig
|
2019-05-21 10:50:46 +02:00 |
|
kirkwood-cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
longhaul.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
longhaul.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
longrun.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
loongson1-cpufreq.c
|
cpufreq: loongson1: Add missing MODULE_ALIAS
|
2020-12-30 11:51:20 +01:00 |
|
loongson2_cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
Makefile
|
Merge branch 'cpufreq/qcom-updates' into cpufreq/arm/linux-next
|
2019-09-03 07:55:22 +05:30 |
|
maple-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
mediatek-cpufreq.c
|
cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:19 +01:00 |
|
mvebu-cpufreq.c
|
|
|
|
omap-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
p4-clockmod.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
pasemi-cpufreq.c
|
cpufreq/pasemi: fix use-after-free in pas_cpufreq_cpu_init()
|
2019-07-23 09:49:10 +02:00 |
|
pcc-cpufreq.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
pmac32-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
pmac64-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
powernow-k6.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
powernow-k7.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
powernow-k7.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
powernow-k8.c
|
cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
|
2021-01-17 14:05:35 +01:00 |
|
powernow-k8.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 347
|
2019-06-05 17:37:08 +02:00 |
|
powernv-cpufreq.c
|
cpufreq: powernv: Fix init_chip_info initialization in numa=off
|
2021-09-22 12:26:37 +02:00 |
|
ppc_cbe_cpufreq.c
|
cpufreq: powerpc_cbe: Switch to QoS requests for freq limits
|
2019-08-26 10:02:01 +02:00 |
|
ppc_cbe_cpufreq.h
|
cpufreq: powerpc_cbe: Switch to QoS requests for freq limits
|
2019-08-26 10:02:01 +02:00 |
|
ppc_cbe_cpufreq_pervasive.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153
|
2019-05-30 11:26:32 -07:00 |
|
ppc_cbe_cpufreq_pmi.c
|
cpufreq: Use per-policy frequency QoS
|
2019-10-21 02:05:21 +02:00 |
|
pxa2xx-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
|
2019-05-30 11:26:35 -07:00 |
|
pxa3xx-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
qcom-cpufreq-hw.c
|
cpufreq: qcom-hw: invoke frequency-invariance setter function
|
2019-08-22 11:31:04 +05:30 |
|
qcom-cpufreq-nvmem.c
|
cpufreq: qcom: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:19 +01:00 |
|
qoriq-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
raspberrypi-cpufreq.c
|
cpufreq: add driver for Raspberry Pi
|
2019-06-13 08:58:22 +05:30 |
|
s3c24xx-cpufreq-debugfs.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
s3c24xx-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
s3c64xx-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
s3c2410-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
s3c2412-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
s3c2416-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
s3c2440-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
s5pv210-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
sa1100-cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
sa1110-cpufreq.c
|
Merge branch 'pm-cpufreq'
|
2019-07-18 09:49:30 +02:00 |
|
sc520_freq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
scmi-cpufreq.c
|
Merge branch 'pm-opp'
|
2019-03-04 11:19:14 +01:00 |
|
scpi-cpufreq.c
|
cpufreq: scpi: Add missing MODULE_ALIAS
|
2020-12-30 11:51:20 +01:00 |
|
sfi-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 235
|
2019-06-19 17:09:07 +02:00 |
|
sh-cpufreq.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
sparc-us2e-cpufreq.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
sparc-us3-cpufreq.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
spear-cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
speedstep-centrino.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
speedstep-ich.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
speedstep-lib.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
speedstep-lib.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
speedstep-smi.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
|
2019-05-30 11:26:39 -07:00 |
|
sti-cpufreq.c
|
cpufreq: st: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:19 +01:00 |
|
sun50i-cpufreq-nvmem.c
|
cpufreq: sun50i: Add missing MODULE_DEVICE_TABLE
|
2020-12-30 11:51:20 +01:00 |
|
tango-cpufreq.c
|
|
|
|
tegra20-cpufreq.c
|
cpufreq: Make cpufreq_generic_init() return void
|
2019-07-16 10:20:11 +02:00 |
|
tegra124-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
|
2019-06-05 17:36:37 +02:00 |
|
tegra186-cpufreq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288
|
2019-06-05 17:36:37 +02:00 |
|
ti-cpufreq.c
|
cpufreq: ti-cpufreq: Mark expected switch fall-through
|
2019-07-30 08:10:45 +05:30 |
|
unicore2-cpufreq.c
|
cpufreq: Avoid creating excessively large stack frames
|
2020-02-11 04:35:25 -08:00 |
|
vexpress-spc-cpufreq.c
|
|
|