clk: qcom: Check clk_is_regmap() before accessing its data members

The clk_hw pointer can only be treated as a clk_regmap if the clk_hw is
known to be embedded within a clk_regmap structure. So first check that
before casting and accessing its data members.

Change-Id: Icad375b036ffa44c441ef16c45307bd2c0603de0
Signed-off-by: Vivek Aknurwar <viveka@codeaurora.org>
Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
This commit is contained in:
Vivek Aknurwar 2021-06-15 15:32:27 -07:00 committed by Mike Tipton
parent 0804c7e037
commit 66d30da10f

View File

@ -766,10 +766,16 @@ void clk_common_debug_init(struct clk_hw *hw, struct dentry *dentry)
static int clk_list_rate_vdd_level(struct clk_hw *hw, unsigned int rate)
{
struct clk_regmap *rclk = to_clk_regmap(hw);
struct clk_vdd_class_data *vdd_data = &rclk->vdd_data;
struct clk_regmap *rclk;
struct clk_vdd_class_data *vdd_data;
if (!vdd_data->vdd_class || !clk_is_regmap_clk(hw))
if (!clk_is_regmap_clk(hw))
return 0;
rclk = to_clk_regmap(hw);
vdd_data = &rclk->vdd_data;
if (!vdd_data->vdd_class)
return 0;
return clk_find_vdd_level(hw, vdd_data, rate);