mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
firmware: arm_scmi: Fix frequency truncation by promoting multiplier type
[ Upstream commit8e3c98d918
] Fix the possible frequency truncation for all values equal to or greater 4GHz on 64bit machines by updating the multiplier 'mult_factor' to 'unsigned long' type. It is also possible that the multiplier itself can be greater than or equal to 2^32. So we need to also fix the equation computing the value of the multiplier. Fixes:a9e3fbfaa0
("firmware: arm_scmi: add initial support for performance protocol") Reported-by: Sibi Sankar <quic_sibis@quicinc.com> Closes: https://lore.kernel.org/all/20231129065748.19871-3-quic_sibis@quicinc.com/ Cc: Cristian Marussi <cristian.marussi@arm.com> Link: https://lore.kernel.org/r/20231130204343.503076-1-sudeep.holla@arm.com Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
90d1f74c3c
commit
aee609302d
1 changed files with 3 additions and 3 deletions
|
@ -131,7 +131,7 @@ struct perf_dom_info {
|
||||||
u32 opp_count;
|
u32 opp_count;
|
||||||
u32 sustained_freq_khz;
|
u32 sustained_freq_khz;
|
||||||
u32 sustained_perf_level;
|
u32 sustained_perf_level;
|
||||||
u32 mult_factor;
|
unsigned long mult_factor;
|
||||||
char name[SCMI_MAX_STR_SIZE];
|
char name[SCMI_MAX_STR_SIZE];
|
||||||
struct scmi_opp opp[MAX_OPPS];
|
struct scmi_opp opp[MAX_OPPS];
|
||||||
struct scmi_fc_info *fc_info;
|
struct scmi_fc_info *fc_info;
|
||||||
|
@ -223,8 +223,8 @@ scmi_perf_domain_attributes_get(const struct scmi_protocol_handle *ph,
|
||||||
dom_info->mult_factor = 1000;
|
dom_info->mult_factor = 1000;
|
||||||
else
|
else
|
||||||
dom_info->mult_factor =
|
dom_info->mult_factor =
|
||||||
(dom_info->sustained_freq_khz * 1000) /
|
(dom_info->sustained_freq_khz * 1000UL)
|
||||||
dom_info->sustained_perf_level;
|
/ dom_info->sustained_perf_level;
|
||||||
strscpy(dom_info->name, attr->name, SCMI_SHORT_NAME_MAX_SIZE);
|
strscpy(dom_info->name, attr->name, SCMI_SHORT_NAME_MAX_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue