mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
msm: msm_bus: Fix the type error causing bandwidth overflow
On legacy chipsets, long int was being used to store return value after calculating interleaved bw. However, NoCs support 64-bit integers ab/ib values. problme occurs if client request for higher bw and if difference of ab value exceeds the range of 32 bit integer, the Value overflows and turns negative, which leads to wrong bw calculation. This patch fixes this integer overflow by correcting argument type to store bw. CRs-Fixed: 537213 Change-Id: I8c6c79ba245a988c2c54ccaca3f3eaf5cb857ce5 Signed-off-by: Alok Chauhan <alokc@codeaurora.org>
This commit is contained in:
parent
838eb0eee0
commit
c3bac0cb1e
2 changed files with 4 additions and 4 deletions
|
@ -1808,7 +1808,7 @@ static void msm_bus_bimc_update_bw(struct msm_bus_inode_info *hop,
|
|||
struct msm_bus_bimc_info *binfo;
|
||||
struct msm_bus_bimc_qos_bw qbw;
|
||||
int i;
|
||||
long int bw;
|
||||
int64_t bw;
|
||||
int ports = info->node_info->num_mports;
|
||||
struct msm_bus_bimc_commit *sel_cd =
|
||||
(struct msm_bus_bimc_commit *)sel_cdata;
|
||||
|
@ -1844,11 +1844,11 @@ static void msm_bus_bimc_update_bw(struct msm_bus_inode_info *hop,
|
|||
qbw.bw = sel_cd->mas[info->node_info->masterp[i]].bw;
|
||||
qbw.ws = info->node_info->ws;
|
||||
/* Threshold low = 90% of bw */
|
||||
qbw.thl = (90 * bw) / 100;
|
||||
qbw.thl = div_s64((90 * bw), 100);
|
||||
/* Threshold medium = bw */
|
||||
qbw.thm = bw;
|
||||
/* Threshold high = 10% more than bw */
|
||||
qbw.thh = (110 * bw) / 100;
|
||||
qbw.thh = div_s64((110 * bw), 100);
|
||||
/* Check if info is a shared master.
|
||||
* If it is, mark it dirty
|
||||
* If it isn't, then set QOS Bandwidth
|
||||
|
|
|
@ -509,7 +509,7 @@ static void msm_bus_noc_update_bw(struct msm_bus_inode_info *hop,
|
|||
struct msm_bus_noc_info *ninfo;
|
||||
struct msm_bus_noc_qos_bw qos_bw;
|
||||
int i, ports;
|
||||
long int bw;
|
||||
int64_t bw;
|
||||
struct msm_bus_noc_commit *sel_cd =
|
||||
(struct msm_bus_noc_commit *)sel_cdata;
|
||||
|
||||
|
|
Loading…
Reference in a new issue