linux/drivers/clk
Stephen Boyd 5a7efdacb9 clkdev: Hold clocks_mutex while iterating clocks list
We recently introduced a change to support devm clk lookups. That change
introduced a code-path that used clk_find() without holding the
'clocks_mutex'. Unfortunately, clk_find() iterates over the 'clocks'
list and so we need to prevent the list from being modified at the same
time. Do this by holding the mutex and checking to make sure it's held
while iterating the list.

Note, we don't really care if the lookup is freed after we find it with
clk_find() because we're just doing a pointer comparison, but if we did
care we would need to keep holding the mutex while we dereference the
clk_lookup pointer.

Fixes: 3eee6c7d11 ("clkdev: add managed clkdev lookup registration")
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Jerome Brunet <jbrunet@baylibre.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Jeffrey Hugo <jhugo@codeaurora.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Acked-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Tested-by: Jeffrey Hugo <jhugo@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2019-04-18 13:33:13 -07:00
..
actions clk: actions: Add clock driver for S500 SoC 2019-02-22 00:01:08 -08:00
at91 clk: at91: fix programmable clock for sama5d2 2019-03-18 12:50:31 -07:00
axis
axs10x clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
bcm Merge branches 'clk-managed-registration', 'clk-spdx', 'clk-remove-basic' and 'clk-ops-const' into clk-next 2018-12-14 13:33:44 -08:00
berlin This time we have a good set of changes to the core framework that do some 2018-06-09 12:06:24 -07:00
davinci clk: davinci: kill davinci_clk_reset_assert/deassert() 2018-10-02 08:54:14 -07:00
h8300 clk: h8300: Remove usage of CLK_IS_BASIC 2018-12-10 14:43:21 -08:00
hisilicon clk: hisilicon: Remove usage of CLK_IS_BASIC 2018-12-10 14:43:21 -08:00
imgtec clk: boston: unregister clks on failure in clk_boston_setup() 2018-11-08 10:14:41 -08:00
imx clk: imx: Fix PLL_1416X not rounding rates 2019-04-12 14:21:43 -07:00
ingenic clk: ingenic: Remove set but not used variable 'enable' 2019-02-26 09:41:04 -08:00
keystone Merge branch 'clk-k3-tisci' into clk-next 2018-10-18 15:40:10 -07:00
loongson1 clk: Loongson1: Remove usage of CLK_IS_BASIC 2018-12-10 14:44:08 -08:00
mediatek clk: mediatek: fix clk-gate flag setting 2019-04-12 09:41:49 -07:00
meson clk: meson: vid-pll-div: remove warning and return 0 on invalid config 2019-03-29 09:41:30 +01:00
microchip
mmp clk: mmp2: separate LCDC peripheral clk form the display clock 2019-02-21 13:52:02 -08:00
mvebu clk: dove: fix refcount leak in dove_clk_init() 2018-12-28 11:45:43 -08:00
mxs
nxp clk: lpc32xx: Set name of regmap_config 2018-03-19 14:35:16 -07:00
pistachio clk: pistachio: constify clk_ops structures 2018-11-06 09:41:49 -08:00
pxa clk: pxa: constify clk_ops structures 2018-11-06 09:41:57 -08:00
qcom Merge branches 'clk-ingenic', 'clk-mtk-mux', 'clk-qcom-sdm845-pcie', 'clk-mtk-crit' and 'clk-mtk' into clk-next 2019-03-08 10:29:30 -08:00
renesas clk: renesas: r8a774a1: Fix LAST_DT_CORE_CLK 2019-02-25 09:13:19 -08:00
rockchip clk: rockchip: add CLK_SET_RATE_PARENT for rk3066 lcdc dclks 2019-01-07 09:17:15 +01:00
samsung Merge branches 'clk-typo', 'clk-json-schema', 'clk-mtk-2712-eco' and 'clk-rockchip' into clk-next 2019-03-08 10:34:22 -08:00
sirf
socfpga Merge branches 'clk-of-refcount', 'clk-mmio-fixed-clock', 'clk-remove-clps', 'clk-socfpga-parent' and 'clk-struct-size' into clk-next 2019-03-08 10:26:59 -08:00
spear clk: spear: fix WDT clock definition on SPEAr600 2018-04-06 13:45:34 -07:00
sprd clk: sprd: add RTC gate for SC9860 2018-03-16 15:53:30 -07:00
st clk: st: Remove usage of CLK_IS_BASIC 2018-12-10 14:43:20 -08:00
sunxi clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
sunxi-ng Merge branches 'clk-optional', 'clk-devm-clkdev-register', 'clk-allwinner', 'clk-meson' and 'clk-renesas' into clk-next 2019-03-08 10:27:21 -08:00
tegra We have a fairly balanced mix of clk driver updates and clk framework 2019-03-14 08:46:17 -07:00
ti We have a fairly balanced mix of clk driver updates and clk framework 2019-03-14 08:46:17 -07:00
uniphier clk: uniphier: Fix update register for CPU-gear 2019-02-21 13:50:23 -08:00
ux500 clk: Use of_node_name_eq for node name comparisons 2018-12-14 13:52:41 -08:00
versatile clk: versatile: sp810: Remove usage of CLK_IS_BASIC 2018-12-10 14:44:05 -08:00
x86 clk: x86: Add system specific quirk to mark clocks as critical 2019-04-10 15:54:12 -07:00
zte
zynq clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
zynqmp clk: zynqmp: Fix memory allocation in zynqmp_clk_setup 2019-01-09 10:37:01 -08:00
clk-asm9260.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-aspeed.c The new and exciting feature this time around is in the clk core. 2018-08-15 21:41:21 -07:00
clk-axi-clkgen.c
clk-axm5516.c clk: axm5516: Remove usage of CLK_IS_BASIC 2018-12-10 14:43:21 -08:00
clk-bd718x7.c clk: bd718x7: Initial support for ROHM bd71837/bd71847 PMIC clock 2018-12-10 12:44:03 -08:00
clk-bulk.c clk: Tag clk core files with SPDX 2018-12-11 09:57:47 -08:00
clk-cdce706.c
clk-cdce925.c Merge branches 'clk-dt-name', 'clk-ti-of-node' and 'clk-sa' into clk-next 2018-10-18 15:33:52 -07:00
clk-clps711x.c clk: clps711x: Remove board support 2019-01-09 12:50:21 -08:00
clk-composite.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-conf.c clk: Tag clk core files with SPDX 2018-12-11 09:57:47 -08:00
clk-cs2000-cp.c clk: cs2000-cp: convert to SPDX identifiers 2018-08-02 13:55:00 -07:00
clk-devres.c clk: Add (devm_)clk_get_optional() functions 2019-02-06 10:33:10 -08:00
clk-divider.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-efm32gg.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
clk-fixed-factor.c Merge branch 'clk-fixes' into clk-next 2018-12-14 13:42:08 -08:00
clk-fixed-mmio.c clk: Add Fixed MMIO clock driver 2019-01-09 11:41:19 -08:00
clk-fixed-rate.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-fractional-divider.c clk: fractional-divider: check parent rate only if flag is set 2019-02-22 00:11:47 -08:00
clk-gate.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-gemini.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
clk-gpio.c clk: clk-gpio: add support for sleeping GPIOs in gpio-gate-clk 2019-02-21 14:05:25 -08:00
clk-hi655x.c clk: clk-hi655x: Free of_provider at remove 2018-12-05 09:20:29 -08:00
clk-highbank.c clk: highbank: fix refcount leak in hb_clk_init() 2018-12-28 11:20:48 -08:00
clk-hsdk-pll.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-max9485.c clk: Add driver for MAX9485 2018-07-06 13:44:06 -07:00
clk-max77686.c clk: clk-max77686: Clean clkdev lookup leak and use devm 2019-02-06 10:35:03 -08:00
clk-moxart.c
clk-multiplier.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-mux.c clk: Tag basic clk types with SPDX 2018-12-11 09:57:48 -08:00
clk-nomadik.c clk: nomadik: Change to use DEFINE_SHOW_ATTRIBUTE macro 2018-11-28 14:13:18 -08:00
clk-npcm7xx.c This time it looks like a quieter release cycle in the clk tree. I guess that's 2018-10-31 11:08:30 -07:00
clk-nspire.c
clk-oxnas.c
clk-palmas.c clk: palmas: constify clk_ops structure 2018-11-06 09:41:44 -08:00
clk-pwm.c
clk-qoriq.c Merge branches 'clk-qcom-msm8998', 'clk-fractional-parent', 'clk-x86-mv' and 'clk-SA-fixes' into clk-next 2019-03-08 10:29:15 -08:00
clk-rk808.c clk: rk808: use managed version of of_provider registration 2018-12-05 09:20:35 -08:00
clk-s2mps11.c clk: s2mps11: constify clk_ops structure 2018-11-06 09:42:12 -08:00
clk-scmi.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-scpi.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-si514.c clk-si514, clk-si544: Implement prepare/unprepare/is_prepared operations 2018-06-29 10:59:40 -07:00
clk-si544.c clk-si514, clk-si544: Implement prepare/unprepare/is_prepared operations 2018-06-29 10:59:40 -07:00
clk-si570.c
clk-si5351.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-si5351.h
clk-stm32f4.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-stm32h7.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-stm32mp1.c clk: stm32mp1: fix bit width of hse_rtc divider 2019-02-21 14:13:22 -08:00
clk-tango4.c clk: Convert to using %pOFn instead of device_node.name 2018-08-30 09:50:20 -07:00
clk-twl6040.c clk: clk-twl6040: Fix imprecise external abort for pdmclk 2019-02-21 14:11:23 -08:00
clk-u300.c
clk-versaclock5.c clk: vc5: Abort clock configuration without upstream clock 2019-01-09 10:53:58 -08:00
clk-vt8500.c
clk-wm831x.c
clk-xgene.c
clk.c clk: fixup default index for of_clk_get_by_name() 2019-03-08 10:35:07 -08:00
clk.h clk: Move of_clk_*() APIs into clk.c from clkdev.c 2019-03-01 11:17:22 -08:00
clkdev.c clkdev: Hold clocks_mutex while iterating clocks list 2019-04-18 13:33:13 -07:00
Kconfig Merge branches 'clk-of-refcount', 'clk-mmio-fixed-clock', 'clk-remove-clps', 'clk-socfpga-parent' and 'clk-struct-size' into clk-next 2019-03-08 10:26:59 -08:00
Makefile Merge branches 'clk-optional', 'clk-devm-clkdev-register', 'clk-allwinner', 'clk-meson' and 'clk-renesas' into clk-next 2019-03-08 10:27:21 -08:00