Commit 768202a0 authored by Jiaran Zhang's avatar Jiaran Zhang Committed by Jason Gunthorpe

RDMA/hns: Solve the overflow of the calc_pg_sz()

calc_pg_sz() may gets a data calculation overflow if the PAGE_SIZE is 64 KB
and hop_num is 2. It is because that all variables involved in calculation
are defined in type of int. So change the type of bt_chunk_size,
buf_chunk_size and obj_per_chunk_default to u64.

Fixes: ba6bb7e9 ("RDMA/hns: Add interfaces to get pf capabilities from firmware")
Link: https://lore.kernel.org/r/1600509802-44382-6-git-send-email-liweihang@huawei.comSigned-off-by: default avatarJiaran Zhang <zhangjiaran@huawei.com>
Signed-off-by: default avatarWeihang Li <liweihang@huawei.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 172505cf
...@@ -1800,9 +1800,9 @@ static void calc_pg_sz(int obj_num, int obj_size, int hop_num, int ctx_bt_num, ...@@ -1800,9 +1800,9 @@ static void calc_pg_sz(int obj_num, int obj_size, int hop_num, int ctx_bt_num,
int *buf_page_size, int *bt_page_size, u32 hem_type) int *buf_page_size, int *bt_page_size, u32 hem_type)
{ {
u64 obj_per_chunk; u64 obj_per_chunk;
int bt_chunk_size = 1 << PAGE_SHIFT; u64 bt_chunk_size = PAGE_SIZE;
int buf_chunk_size = 1 << PAGE_SHIFT; u64 buf_chunk_size = PAGE_SIZE;
int obj_per_chunk_default = buf_chunk_size / obj_size; u64 obj_per_chunk_default = buf_chunk_size / obj_size;
*buf_page_size = 0; *buf_page_size = 0;
*bt_page_size = 0; *bt_page_size = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment