Skip to content

Commit a7d9436

Browse files
stephan-ghGeorgi Djakov
authored andcommitted
interconnect: qcom: rpm: Prevent integer overflow in rate
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 7381e27 ("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>
1 parent 42cdeb6 commit a7d9436

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

drivers/interconnect/qcom/icc-rpm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst)
239239
rate = max(sum_bw, max_peak_bw);
240240

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

243244
if (qn->rate == rate)
244245
return 0;

0 commit comments

Comments
 (0)