All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@kernel.org>
To: jbrunet@baylibre.com, mojha@codeaurora.org,
	mturquette@baylibre.com, nixiaoming@huawei.com,
	sboyd@codeaurora.org, soren.brinkmann@xilinx.com
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/2] clk:Fix divide-by-zero in divider_ro_round_rate_parent
Date: Tue, 23 Apr 2019 15:51:42 -0700	[thread overview]
Message-ID: <155605990288.15276.7089726827167650203@swboyd.mtv.corp.google.com> (raw)
In-Reply-To: <1553954090-65470-1-git-send-email-nixiaoming@huawei.com>

Quoting nixiaoming (2019-03-30 06:54:50)
> In the function divider_recalc_rate() The judgment of the return value of
> _get_div() indicates that the return value of _get_div() can be 0.

When does _get_div() return 0? It can't be CLK_DIVIDER_MAX_AT_ZERO or
CLK_DIVIDER_POWER_OF_TWO. I suppose it could be CLK_DIVIDER_ONE_BASED if
CLK_DIVIDER_ALLOW_ZERO is set? Or just CLK_DIVIDER_ALLOW_ZERO is set? Or
a table that has 0 in it for some odd reason.

> In order to avoid the divide-by-zero error, add check for return value
> of _get_div() in the divider_ro_round_rate_parent()
> 
> Signed-off-by: nixiaoming <nixiaoming@huawei.com>
> Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
> ---
>  drivers/clk/clk-divider.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
> index e5a1726..f4bf7a4 100644
> --- a/drivers/clk/clk-divider.c
> +++ b/drivers/clk/clk-divider.c
> @@ -347,6 +347,9 @@ long divider_ro_round_rate_parent(struct clk_hw *hw, struct clk_hw *parent,
>         int div;
>  
>         div = _get_div(table, val, flags, width);
> +       /* avoid divide-by-zero */
> +       if (!div)
> +               return -EINVAL;

Can you please give more details on what's happening here? Who's the
caller? What are the arguments being passed in? Shouldn't we check for
CLK_DIVIDER_ALLOW_ZERO and then return prate as it comes in instead of
returning an error?

>  
>         /* Even a read-only clock can propagate a rate change */
>         if (clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT) {

  reply	other threads:[~2019-04-23 22:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-30 13:54 [PATCH v3 1/2] clk:Fix divide-by-zero in divider_ro_round_rate_parent nixiaoming
2019-04-23 22:51 ` Stephen Boyd [this message]
2019-04-24 15:31   ` Nixiaoming
2019-04-24 21:27     ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=155605990288.15276.7089726827167650203@swboyd.mtv.corp.google.com \
    --to=sboyd@kernel.org \
    --cc=jbrunet@baylibre.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mojha@codeaurora.org \
    --cc=mturquette@baylibre.com \
    --cc=nixiaoming@huawei.com \
    --cc=sboyd@codeaurora.org \
    --cc=soren.brinkmann@xilinx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.