lkml.org 
[lkml]   [2022]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 18/44] interconnect: qcom: rpm: Prevent integer overflow in rate
    Date
    From: Stephan Gerhold <stephan@gerhold.net>

    [ Upstream commit a7d9436a6c85fcb8843c910fd323dcd7f839bf63 ]

    Using icc-rpm on ARM32 currently results in clk_set_rate() errors during
    boot, e.g. "bus clk_set_rate error: -22". This is very similar to commit
    7381e27b1e56 ("interconnect: qcom: msm8974: Prevent integer overflow in rate")
    where the u64 is converted to a signed long during clock rate rounding,
    resulting in an overflow on 32-bit platforms.

    Let's fix it similarly by making sure that the rate does not exceed
    LONG_MAX. Such high clock rates will surely result in the maximum
    frequency of the bus anyway.

    Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
    Link: https://lore.kernel.org/r/20211206114542.45325-1-stephan@gerhold.net
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/interconnect/qcom/icc-rpm.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c
    index 54de49ca7808a..ddf1805ded0c0 100644
    --- a/drivers/interconnect/qcom/icc-rpm.c
    +++ b/drivers/interconnect/qcom/icc-rpm.c
    @@ -68,6 +68,7 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst)
    rate = max(sum_bw, max_peak_bw);

    do_div(rate, qn->buswidth);
    + rate = min_t(u64, rate, LONG_MAX);

    if (qn->rate == rate)
    return 0;
    --
    2.34.1
    \
     
     \ /
      Last update: 2022-01-17 18:05    [W:4.130 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site