mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-12 09:38:13 +00:00
Don't compare the parent clock name with a NULL name in the
clk_parent_map. This prevents a kernel crash when passing NULL
core->parents[i].name to strcmp().
An example which triggered this is a mux clock with four parents when
each of them is referenced in the clock driver using
clk_parent_data.fw_name and then calling clk_set_parent(clk, 3rd_parent)
on this mux.
In this case the first parent is also the HW default so
core->parents[i].hw is populated when the clock is registered. Calling
clk_set_parent(clk, 3rd_parent) will then go through all parents and
skip the first parent because it's hw pointer doesn't match. For the
second parent no hw pointer is cached yet and clk_core_get(core, 1)
returns a non-matching pointer (which is correct because we are comparing
the second with the third parent). Comparing the result of
clk_core_get(core, 2) with the requested parent gives a match. However
we don't reach this point because right after the clk_core_get(core, 1)
mismatch the old code tried to !strcmp(parent->name, NULL) (where the
second argument is actually core->parents[i].name, but that was never
populated by the clock driver).
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://lkml.kernel.org/r/20190815223155.21384-1-martin.blumenstingl@googlemail.com
Fixes:
|
||
---|---|---|
.. | ||
actions | ||
analogbits | ||
at91 | ||
axis | ||
axs10x | ||
bcm | ||
berlin | ||
davinci | ||
h8300 | ||
hisilicon | ||
imgtec | ||
imx | ||
ingenic | ||
keystone | ||
loongson1 | ||
mediatek | ||
meson | ||
microchip | ||
mmp | ||
mvebu | ||
mxs | ||
nxp | ||
pistachio | ||
pxa | ||
qcom | ||
renesas | ||
rockchip | ||
samsung | ||
sifive | ||
sirf | ||
socfpga | ||
spear | ||
sprd | ||
st | ||
sunxi | ||
sunxi-ng | ||
tegra | ||
ti | ||
uniphier | ||
ux500 | ||
versatile | ||
x86 | ||
zte | ||
zynq | ||
zynqmp | ||
clk-asm9260.c | ||
clk-aspeed.c | ||
clk-axi-clkgen.c | ||
clk-axm5516.c | ||
clk-bd718x7.c | ||
clk-bulk.c | ||
clk-cdce706.c | ||
clk-cdce925.c | ||
clk-clps711x.c | ||
clk-composite.c | ||
clk-conf.c | ||
clk-cs2000-cp.c | ||
clk-devres.c | ||
clk-divider.c | ||
clk-efm32gg.c | ||
clk-fixed-factor.c | ||
clk-fixed-mmio.c | ||
clk-fixed-rate.c | ||
clk-fractional-divider.c | ||
clk-gate.c | ||
clk-gemini.c | ||
clk-gpio.c | ||
clk-hi655x.c | ||
clk-highbank.c | ||
clk-hsdk-pll.c | ||
clk-lochnagar.c | ||
clk-max9485.c | ||
clk-max77686.c | ||
clk-milbeaut.c | ||
clk-moxart.c | ||
clk-multiplier.c | ||
clk-mux.c | ||
clk-nomadik.c | ||
clk-npcm7xx.c | ||
clk-nspire.c | ||
clk-oxnas.c | ||
clk-palmas.c | ||
clk-pwm.c | ||
clk-qoriq.c | ||
clk-rk808.c | ||
clk-s2mps11.c | ||
clk-scmi.c | ||
clk-scpi.c | ||
clk-si514.c | ||
clk-si544.c | ||
clk-si570.c | ||
clk-si5341.c | ||
clk-si5351.c | ||
clk-si5351.h | ||
clk-stm32f4.c | ||
clk-stm32h7.c | ||
clk-stm32mp1.c | ||
clk-tango4.c | ||
clk-twl6040.c | ||
clk-u300.c | ||
clk-versaclock5.c | ||
clk-vt8500.c | ||
clk-wm831x.c | ||
clk-xgene.c | ||
clk.c | ||
clk.h | ||
clkdev.c | ||
Kconfig | ||
Makefile |