clk: scpi: fix return type of __scpi_dvfs_round_rate
authorSudeep Holla <sudeep.holla@arm.com>
Thu, 18 May 2017 16:19:28 +0000 (17:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Apr 2018 17:48:15 +0000 (19:48 +0200)
[ Upstream commit 7374aec95636ca39409545eba4ef5ff3125c2346 ]

The frequencies above the maximum value of signed integer(i.e. 2^31 -1)
will overflow with the current code.

This patch fixes the return type of __scpi_dvfs_round_rate from 'int'
to 'unsigned long'.

Fixes: cd52c2a4b5c4 ("clk: add support for clocks provided by SCP(System Control Processor)")
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/clk-scpi.c

index 96d37175d0ad59f47abd218db271f558c5921a4d..8ad458b5ad6e7c83d4b9d54d2ebfd16861c49da1 100644 (file)
@@ -71,15 +71,15 @@ static const struct clk_ops scpi_clk_ops = {
 };
 
 /* find closest match to given frequency in OPP table */
-static int __scpi_dvfs_round_rate(struct scpi_clk *clk, unsigned long rate)
+static long __scpi_dvfs_round_rate(struct scpi_clk *clk, unsigned long rate)
 {
        int idx;
-       u32 fmin = 0, fmax = ~0, ftmp;
+       unsigned long fmin = 0, fmax = ~0, ftmp;
        const struct scpi_opp *opp = clk->info->opps;
 
        for (idx = 0; idx < clk->info->count; idx++, opp++) {
                ftmp = opp->freq;
-               if (ftmp >= (u32)rate) {
+               if (ftmp >= rate) {
                        if (ftmp <= fmax)
                                fmax = ftmp;
                        break;