From 047b9b2aa4425c9a950c50939472371621e3c930 Mon Sep 17 00:00:00 2001 From: liulongfang Date: Fri, 9 Aug 2019 21:23:21 +0800 Subject: [PATCH] ACC: HPRE&ZIP: qm current_q limit num modify driver inclusion category: bugfix bugzilla: NA CVE: NA Exclusion divided by zero operation Feature or Bugfix:Bugfix Signed-off-by: liulongfang Reviewed-by: wangzhou Signed-off-by: lingmingqiang Reviewed-by: lingmingqiang Reviewed-by: Yang Yingliang Signed-off-by: Yang Yingliang --- drivers/crypto/hisilicon/hpre/hpre_main.c | 15 +++++++++------ drivers/crypto/hisilicon/zip/zip_main.c | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/hisilicon/hpre/hpre_main.c index 3dde20991569..0514f71312c9 100644 --- a/drivers/crypto/hisilicon/hpre/hpre_main.c +++ b/drivers/crypto/hisilicon/hpre/hpre_main.c @@ -475,15 +475,18 @@ static int current_qm_write(struct hpre_debugfs_file *file, u32 val) if (val > ctrl->num_vfs) return -EINVAL; - /* According PF or VF Dev ID to calculation the curr_qm_qp_num */ - vfq_num = (qm->ctrl_q_num - qm->qp_num) / ctrl->num_vfs; + /* According PF or VF Dev ID to calculation curr_qm_qp_num and store */ if (val == 0) { qm->debug.curr_qm_qp_num = qm->qp_num; - } else if (val == ctrl->num_vfs) { - qm->debug.curr_qm_qp_num = qm->ctrl_q_num - qm->qp_num - - (ctrl->num_vfs - 1) * vfq_num; } else { - qm->debug.curr_qm_qp_num = vfq_num; + vfq_num = (qm->ctrl_q_num - qm->qp_num) / ctrl->num_vfs; + if (val == ctrl->num_vfs) { + qm->debug.curr_qm_qp_num = + qm->ctrl_q_num - qm->qp_num - + (ctrl->num_vfs - 1) * vfq_num; + } else { + qm->debug.curr_qm_qp_num = vfq_num; + } } writel(val, qm->io_base + QM_DFX_MB_CNT_VF); diff --git a/drivers/crypto/hisilicon/zip/zip_main.c b/drivers/crypto/hisilicon/zip/zip_main.c index ca0c403a73ce..cb939cc3b40e 100644 --- a/drivers/crypto/hisilicon/zip/zip_main.c +++ b/drivers/crypto/hisilicon/zip/zip_main.c @@ -484,15 +484,18 @@ static int current_qm_write(struct ctrl_debug_file *file, u32 val) if (val > ctrl->num_vfs) return -EINVAL; - /* According PF or VF Dev ID to calculation the curr_qm_qp_num */ - vfq_num = (qm->ctrl_q_num - qm->qp_num) / ctrl->num_vfs; + /* According PF or VF Dev ID to calculation curr_qm_qp_num and store */ if (val == 0) { qm->debug.curr_qm_qp_num = qm->qp_num; - } else if (val == ctrl->num_vfs) { - qm->debug.curr_qm_qp_num = qm->ctrl_q_num - qm->qp_num - - (ctrl->num_vfs - 1) * vfq_num; } else { - qm->debug.curr_qm_qp_num = vfq_num; + vfq_num = (qm->ctrl_q_num - qm->qp_num) / ctrl->num_vfs; + if (val == ctrl->num_vfs) { + qm->debug.curr_qm_qp_num = + qm->ctrl_q_num - qm->qp_num - + (ctrl->num_vfs - 1) * vfq_num; + } else { + qm->debug.curr_qm_qp_num = vfq_num; + } } writel(val, qm->io_base + QM_DFX_MB_CNT_VF); -- GitLab