
From: Junxian Huang <huangjunxian6@hisilicon.com> driver inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/ICJYA1 ---------------------------------------------------------------------- When uctx is allocated while dca memory not registered, the total size of dca memory will be zero, leading to a divide-by-zero error in debugfs. Fixes: a21781182f77 ("RDMA/hns: Add debugfs support for DCA") Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com> Signed-off-by: Donghua Huang <huangdonghua3@h-partners.com> --- drivers/infiniband/hw/hns/hns_roce_debugfs.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/infiniband/hw/hns/hns_roce_debugfs.c b/drivers/infiniband/hw/hns/hns_roce_debugfs.c index 270282521306..068de09c292d 100644 --- a/drivers/infiniband/hw/hns/hns_roce_debugfs.c +++ b/drivers/infiniband/hw/hns/hns_roce_debugfs.c @@ -250,6 +250,12 @@ static u64 calc_loading_percent(size_t total, size_t free, u32 *out_rem) all_pages = total >> HNS_HW_PAGE_SHIFT; free_pages = free >> HNS_HW_PAGE_SHIFT; + + if (!all_pages) { + percent = 0; + goto out; + } + if (all_pages >= free_pages) { used_pages = all_pages - free_pages; scale = LOADING_PERCENT_SCALE * LOADING_PERCENT_SCALE; @@ -257,6 +263,7 @@ static u64 calc_loading_percent(size_t total, size_t free, u32 *out_rem) percent = div_u64_rem(percent, LOADING_PERCENT_SCALE, &rem); } +out: if (out_rem) *out_rem = rem; -- 2.33.0