linux_dsm_epyc7002/drivers/clk/qcom
Douglas Anderson 908b050114 clk: qcom: rcg2: Don't crash if our parent can't be found; return an error
When I got my clock parenting slightly wrong I ended up with a crash
that looked like this:

  Unable to handle kernel NULL pointer dereference at virtual
  address 0000000000000000
  ...
  pc : clk_hw_get_rate+0x14/0x44
  ...
  Call trace:
   clk_hw_get_rate+0x14/0x44
   _freq_tbl_determine_rate+0x94/0xfc
   clk_rcg2_determine_rate+0x2c/0x38
   clk_core_determine_round_nolock+0x4c/0x88
   clk_core_round_rate_nolock+0x6c/0xa8
   clk_core_round_rate_nolock+0x9c/0xa8
   clk_core_set_rate_nolock+0x70/0x180
   clk_set_rate+0x3c/0x6c
   of_clk_set_defaults+0x254/0x360
   platform_drv_probe+0x28/0xb0
   really_probe+0x120/0x2dc
   driver_probe_device+0x64/0xfc
   device_driver_attach+0x4c/0x6c
   __driver_attach+0xac/0xc0
   bus_for_each_dev+0x84/0xcc
   driver_attach+0x2c/0x38
   bus_add_driver+0xfc/0x1d0
   driver_register+0x64/0xf8
   __platform_driver_register+0x4c/0x58
   msm_drm_register+0x5c/0x60
   ...

It turned out that clk_hw_get_parent_by_index() was returning NULL and
we weren't checking.  Let's check it so that we don't crash.

Fixes: ac269395cd ("clk: qcom: Convert to clk_hw based provider APIs")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Link: https://lkml.kernel.org/r/20200203103049.v4.1.I7487325fe8e701a68a07d3be8a6a4b571eca9cfa@changeid
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2020-02-03 23:04:02 -08:00
..
a53-pll.c clk: qcom: Add A53 PLL support 2018-01-02 10:00:24 -08:00
apcs-msm8916.c clk: qcom: apcs-msm8916: use clk_parent_data to specify the parent 2020-01-04 23:15:47 -08:00
camcc-sdm845.c clk: qcom: Add camera clock controller driver for SDM845 2018-08-30 18:27:06 -07:00
clk-alpha-pll.c clk: qcom: clk-alpha-pll: Add support for Fabia PLL calibration 2019-12-23 22:30:09 -08:00
clk-alpha-pll.h clk: qcom: clk-alpha-pll: Add support for Fabia PLL calibration 2019-12-23 22:30:09 -08:00
clk-branch.c clk: qcom: branch: Add AON clock ops 2019-04-11 13:34:21 -07:00
clk-branch.h clk: qcom: branch: Add AON clock ops 2019-04-11 13:34:21 -07:00
clk-hfpll.c clk: let init callback return an error code 2019-12-23 18:53:13 -08:00
clk-hfpll.h clk: qcom: Add support for High-Frequency PLLs (HFPLLs) 2018-10-17 13:14:37 -07:00
clk-krait.c clk: qcom: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07:00
clk-krait.h clk: qcom: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07:00
clk-pll.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-pll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-rcg2.c clk: qcom: rcg2: Don't crash if our parent can't be found; return an error 2020-02-03 23:04:02 -08:00
clk-rcg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-rcg.h clk: qcom: rcg2: Add support for display port clock ops 2019-12-18 21:22:00 -08:00
clk-regmap-divider.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-divider.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-mux-div.c clk: qcom: Add regmap mux-div clocks support 2018-01-02 10:00:24 -08:00
clk-regmap-mux-div.h clk: qcom: Use the correct style for SPDX License Identifier 2019-05-01 13:01:13 -07:00
clk-regmap-mux.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap-mux.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-regmap.c clk: qcom: Update SPDX headers for common files 2018-07-25 09:23:33 -07:00
clk-regmap.h clk: qcom: Update SPDX headers for common files 2018-07-25 09:23:33 -07:00
clk-rpm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
clk-rpmh.c clk: qcom: rpmh: Sort OF match table 2020-01-28 10:27:57 -08:00
clk-smd-rpm.c clk: qcom: smd: Add missing bimc clock 2019-12-18 22:03:02 -08:00
clk-spmi-pmic-div.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
common.c clk: qcom: Allow constant ratio freq tables for rcg 2019-11-07 13:43:19 -08:00
common.h clk: qcom: define probe by index API as common API 2019-08-08 08:20:01 -07:00
dispcc-sc7180.c clk: qcom: Add display clock controller driver for SC7180 2019-12-23 22:30:10 -08:00
dispcc-sdm845.c clk: qcom: dispcc: Add support for display port clocks 2019-12-18 21:24:13 -08:00
gcc-apq8084.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq806x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq4019.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-ipq6018.c clk: qcom: Add ipq6018 Global Clock Controller support 2020-01-09 12:42:55 -08:00
gcc-ipq8074.c clk: qcom: gcc: Use floor ops for SDCC clocks 2019-09-09 04:39:12 -07:00
gcc-mdm9615.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8660.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8916.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8974.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
gcc-msm8994.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
gcc-msm8996.c clk: qcom: gcc-msm8996: Fix parent for CLKREF clocks 2020-01-06 08:55:28 -08:00
gcc-msm8998.c clk: qcom: Add missing msm8998 gcc_bimc_gfx_clk 2019-12-23 18:24:48 -08:00
gcc-qcs404.c clk: qcom: gcc: limit GPLL0_AO_OUT operating frequency 2019-12-18 22:07:52 -08:00
gcc-sc7180.c clk: qcom: gcc-sc7180: Fix setting flag for votable GDSCs 2019-12-18 21:35:58 -08:00
gcc-sdm660.c clk: qcom: gcc: Use floor ops for SDCC clocks 2019-09-09 04:39:12 -07:00
gcc-sdm845.c Merge branch 'thermal/next' of git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux 2019-12-05 11:21:24 -08:00
gcc-sm8150.c clk: qcom: gcc: Use floor ops for SDCC clocks 2019-09-09 04:39:12 -07:00
gdsc.c This round of clk driver and framework updates is heavy on the driver update 2019-07-17 10:07:48 -07:00
gdsc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
gpucc-msm8998.c clk: qcom: Avoid SMMU/cx gdsc corner cases 2019-12-18 22:02:27 -08:00
gpucc-sc7180.c clk: qcom: Add graphics clock controller driver for SC7180 2020-01-04 23:25:00 -08:00
gpucc-sdm845.c clk: qcom: gpu_cc_gmu_clk_src has 5 parents, not 6 2018-11-28 13:24:45 -08:00
hfpll.c clk: qcom: hfpll: use clk_parent_data to specify the parent 2019-12-18 22:07:52 -08:00
Kconfig Merge branches 'clk-imx', 'clk-ti', 'clk-xilinx', 'clk-nvidia', 'clk-qcom', 'clk-freescale' and 'clk-qoriq' into clk-next 2020-01-31 13:14:26 -08:00
kpss-xcc.c clk: qcom: Add KPSS ACC/GCC driver 2018-10-17 13:14:54 -07:00
krait-cc.c clk: qcom: Add safe switch hook for krait mux clocks 2018-10-17 13:15:05 -07:00
lcc-ipq806x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lcc-mdm9615.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
lpasscc-sdm845.c clk: qcom: define probe by index API as common API 2019-08-08 08:20:01 -07:00
Makefile clk: qcom: Add ipq6018 Global Clock Controller support 2020-01-09 12:42:55 -08:00
mmcc-apq8084.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
mmcc-msm8960.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
mmcc-msm8974.c clk: qcom: mmcc8974: move gfx3d_clk_src from the mmcc to rpm 2019-12-18 21:27:44 -08:00
mmcc-msm8996.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
mmcc-msm8998.c clk: qcom: Add MSM8998 Multimedia Clock Controller (MMCC) driver 2019-12-18 21:37:40 -08:00
q6sstop-qcs404.c clk: qcom: Add Q6SSTOP clock controller for QCS404 2019-11-07 13:10:36 -08:00
reset.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
reset.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
turingcc-qcs404.c clk: qcom: fix QCS404 TuringCC regmap 2019-09-09 09:05:22 -07:00
videocc-sc7180.c clk: qcom: Add video clock controller driver for SC7180 2020-01-04 23:25:01 -08:00
videocc-sdm845.c clk: qcom: Move frequency table macro to common file 2018-07-06 16:45:51 -07:00