From: Gax-c <zichenxie0106@gmail.com>
To: mturquette@baylibre.com, sboyd@kernel.org,
unicorn_wang@outlook.com, inochiama@outlook.com,
dan.carpenter@linaro.org, nathan@kernel.org
Cc: linux-clk@vger.kernel.org, zzjas98@gmail.com,
chenyuan0y@gmail.com, Zichen Xie <zichenxie0106@gmail.com>
Subject: [PATCH] clk: sophgo: Cast an operand to u64 to prevent potential unsigned long overflow on 32-bit machine in sg2042_pll_recalc_rate()
Date: Mon, 21 Oct 2024 15:51:02 -0500 [thread overview]
Message-ID: <20241021205101.13416-1-zichenxie0106@gmail.com> (raw)
From: Zichen Xie <zichenxie0106@gmail.com>
This was found by a static analyzer.
There may be a potential integer overflow issue in
sg2042_pll_recalc_rate(). numerator is defined as u64 while
parent_rate is defined as unsigned long and ctrl_table.fbdiv
is defined as unsigned int. On 32-bit machine, the result of
the calculation will be limited to "u32" without correct casting.
Integer overflow may occur on high-performance systems.
For the same reason, adding a cast to denominator could be better.
So, we recommend adding an extra cast to prevent potential
integer overflow.
Fixes: 48cf7e01386e ("clk: sophgo: Add SG2042 clock driver")
Signed-off-by: Zichen Xie <zichenxie0106@gmail.com>
---
drivers/clk/sophgo/clk-sg2042-pll.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/sophgo/clk-sg2042-pll.c b/drivers/clk/sophgo/clk-sg2042-pll.c
index ff9deeef509b..e0f92f7a21bd 100644
--- a/drivers/clk/sophgo/clk-sg2042-pll.c
+++ b/drivers/clk/sophgo/clk-sg2042-pll.c
@@ -153,8 +153,8 @@ static unsigned long sg2042_pll_recalc_rate(unsigned int reg_value,
sg2042_pll_ctrl_decode(reg_value, &ctrl_table);
- numerator = parent_rate * ctrl_table.fbdiv;
- denominator = ctrl_table.refdiv * ctrl_table.postdiv1 * ctrl_table.postdiv2;
+ numerator = (u64)parent_rate * ctrl_table.fbdiv;
+ denominator = (u64)ctrl_table.refdiv * ctrl_table.postdiv1 * ctrl_table.postdiv2;
do_div(numerator, denominator);
return numerator;
}
--
2.34.1
next reply other threads:[~2024-10-21 20:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-21 20:51 Gax-c [this message]
2024-10-22 0:18 ` [PATCH] clk: sophgo: Cast an operand to u64 to prevent potential unsigned long overflow on 32-bit machine in sg2042_pll_recalc_rate() Chen Wang
2024-10-22 7:58 ` Dan Carpenter
2024-10-22 15:39 ` Zichen Xie
2024-10-22 18:11 ` Dan Carpenter
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=20241021205101.13416-1-zichenxie0106@gmail.com \
--to=zichenxie0106@gmail.com \
--cc=chenyuan0y@gmail.com \
--cc=dan.carpenter@linaro.org \
--cc=inochiama@outlook.com \
--cc=linux-clk@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=nathan@kernel.org \
--cc=sboyd@kernel.org \
--cc=unicorn_wang@outlook.com \
--cc=zzjas98@gmail.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.