lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 29 Jan 2020 08:51:19 +0530
From:   Rajendra Nayak <rnayak@...eaurora.org>
To:     Stephen Boyd <sboyd@...nel.org>,
        Michael Turquette <mturquette@...libre.com>
Cc:     linux-kernel@...r.kernel.org, linux-clk@...r.kernel.org
Subject: Re: [PATCH] clk: qcom: Don't overwrite 'cfg' in
 clk_rcg2_dfs_populate_freq()


On 1/29/2020 1:03 AM, Stephen Boyd wrote:
> The DFS frequency table logic overwrites 'cfg' while detecting the
> parent clk and then later on in clk_rcg2_dfs_populate_freq() we use that
> same variable to figure out the mode of the clk, either MND or not. Add
> a new variable to hold the parent clk bit so that 'cfg' is left
> untouched for use later.
> 
> This fixes problems in detecting the supported frequencies for any clks
> in DFS mode.
> 
> Fixes: cc4f6944d0e3 ("clk: qcom: Add support for RCG to register for DFS")
> Reported-by: Rajendra Nayak <rnayak@...eaurora.org>
> Signed-off-by: Stephen Boyd <sboyd@...nel.org>
> ---

Tested-by: Rajendra Nayak <rnayak@...eaurora.org>

>   drivers/clk/qcom/clk-rcg2.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/clk/qcom/clk-rcg2.c b/drivers/clk/qcom/clk-rcg2.c
> index da045b200def..973ecf4f6bc5 100644
> --- a/drivers/clk/qcom/clk-rcg2.c
> +++ b/drivers/clk/qcom/clk-rcg2.c
> @@ -953,7 +953,7 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,
>   	struct clk_rcg2 *rcg = to_clk_rcg2(hw);
>   	struct clk_hw *p;
>   	unsigned long prate = 0;
> -	u32 val, mask, cfg, mode;
> +	u32 val, mask, cfg, mode, src;
>   	int i, num_parents;
>   
>   	regmap_read(rcg->clkr.regmap, rcg->cmd_rcgr + SE_PERF_DFSR(l), &cfg);
> @@ -963,12 +963,12 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,
>   	if (cfg & mask)
>   		f->pre_div = cfg & mask;
>   
> -	cfg &= CFG_SRC_SEL_MASK;
> -	cfg >>= CFG_SRC_SEL_SHIFT;
> +	src = cfg & CFG_SRC_SEL_MASK;
> +	src >>= CFG_SRC_SEL_SHIFT;
>   
>   	num_parents = clk_hw_get_num_parents(hw);
>   	for (i = 0; i < num_parents; i++) {
> -		if (cfg == rcg->parent_map[i].cfg) {
> +		if (src == rcg->parent_map[i].cfg) {
>   			f->src = rcg->parent_map[i].src;
>   			p = clk_hw_get_parent_by_index(&rcg->clkr.hw, i);
>   			prate = clk_hw_get_rate(p);
> 

-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ