Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 20 May 2024 10:55:49 +0530 | Subject | Re: [PATCH] cpufreq: scmi: Avoid overflow of target_freq in fast switch | From | Jagadeesh Kona <> |
| |
On 5/17/2024 12:31 PM, Jagadeesh Kona wrote: > Conversion of target_freq to HZ in scmi_cpufreq_fast_switch() > can lead to overflow if the multiplied result is greater than > UINT_MAX, since type of target_freq is unsigned int. Avoid this > overflow by assigning target_freq to u64 variable for converting > it to HZ. > > Signed-off-by: Jagadeesh Kona <quic_jkona@quicinc.com> > --- > drivers/cpufreq/scmi-cpufreq.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c > index 3b4f6bfb2f4c..42be87aebe6f 100644 > --- a/drivers/cpufreq/scmi-cpufreq.c > +++ b/drivers/cpufreq/scmi-cpufreq.c > @@ -63,9 +63,9 @@ static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy, > unsigned int target_freq) > { > struct scmi_data *priv = policy->driver_data; > + u64 freq = target_freq; >
To keep type of freq consistent with the rate parameter of scmi freq_set() callback which is unsigned long, will move the above freq variable from u64 to unsigned long and post the v2 series.
Thanks, Jagadeesh
> - if (!perf_ops->freq_set(ph, priv->domain_id, > - target_freq * 1000, true)) > + if (!perf_ops->freq_set(ph, priv->domain_id, freq * 1000, true)) > return target_freq; > > return 0;
| ![\](/images/icornerr.gif) |