From 2eb3ba4fa285af85322e5e0a0f92e65da2408a44 Mon Sep 17 00:00:00 2001 From: Philip Elcan Date: Thu, 1 Aug 2019 15:08:02 -0400 Subject: [PATCH] gpu: nvgpu: fbp: fix CERT-C violations CERT-C Rule INT30-C Requires that unsigned integer operations do not wrap. Fix these violations by using the safe ops. JIRA NVGPU-3868 Change-Id: I79abc966425dc454f0fbcaca24506c73b63ff683 Signed-off-by: Philip Elcan Reviewed-on: https://git-master.nvidia.com/r/2166260 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra GVS: Gerrit_Virtual_Submit Reviewed-by: Nitin Kumbhar Reviewed-by: Alex Waterman Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/fbp/fbp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nvgpu/common/fbp/fbp.c b/drivers/gpu/nvgpu/common/fbp/fbp.c index 285e183cd..ca0ab1a61 100644 --- a/drivers/gpu/nvgpu/common/fbp/fbp.c +++ b/drivers/gpu/nvgpu/common/fbp/fbp.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "fbp_priv.h" @@ -60,11 +61,13 @@ int nvgpu_fbp_init_support(struct gk20a *g) */ fbp_en_mask = g->ops.fuse.fuse_status_opt_fbp(g); fbp_en_mask = ~fbp_en_mask; - fbp_en_mask = fbp_en_mask & (BIT32(fbp->max_fbps_count) - 1U); + fbp_en_mask = fbp_en_mask & + nvgpu_safe_sub_u32(BIT32(fbp->max_fbps_count), 1U); fbp->fbp_en_mask = fbp_en_mask; fbp->fbp_rop_l2_en_mask = - nvgpu_kzalloc(g, fbp->max_fbps_count * sizeof(u32)); + nvgpu_kzalloc(g, + nvgpu_safe_mult_u64(fbp->max_fbps_count, sizeof(u32))); if (fbp->fbp_rop_l2_en_mask == NULL) { nvgpu_kfree(g, fbp); return -ENOMEM; @@ -72,7 +75,7 @@ int nvgpu_fbp_init_support(struct gk20a *g) fbp_en_mask_tmp = fbp_en_mask; max_ltc_per_fbp = g->ops.top.get_max_ltc_per_fbp(g); - rop_l2_all_en = BIT32(max_ltc_per_fbp) - 1U; + rop_l2_all_en = nvgpu_safe_sub_u32(BIT32(max_ltc_per_fbp), 1U); /* mask of Rop_L2 for each FBP */ for_each_set_bit(i, &fbp_en_mask_tmp, fbp->max_fbps_count) {