From bc6625b9b2a2e5ef05cedf0888c28819d3c3f412 Mon Sep 17 00:00:00 2001 From: Scott Long Date: Thu, 23 Aug 2018 10:55:04 -0700 Subject: gpu: nvgpu: fix zbc MISRA 10.1 violations The gr_gk20a_add_zbc() routine returns a signed error (errno) status value. Current callers of this function use a bitwise OR to collect the returned error status values to generate a single value to return. Bitwise OR on signed status values is flagged as a violation of MISRA Rule 10.1 (not to mention that in this case it potentially results in a garbage return value). To eliminate such violations this change modifies the following routines to fail immediately on the first error from a call to gr_gk20a_add_zbc(): * gr_gk20a_load_zbc_default_table() * gr_gv11b_load_stencil_default_tbl() JIRA NVGPU-650 Change-Id: If733c1bb0e05943ff5d0355de729133c89233583 Signed-off-by: Scott Long Reviewed-on: https://git-master.nvidia.com/r/1805501 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'drivers/gpu/nvgpu/gv11b') diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 8b3253a1..296d8e90 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c @@ -1121,7 +1121,7 @@ int gr_gv11b_load_stencil_default_tbl(struct gk20a *g, struct gr_gk20a *gr) { struct zbc_entry zbc_val; - u32 err; + int err; /* load default stencil table */ zbc_val.type = GV11B_ZBC_TYPE_STENCIL; @@ -1129,23 +1129,30 @@ int gr_gv11b_load_stencil_default_tbl(struct gk20a *g, zbc_val.depth = 0x0; zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8; err = gr_gk20a_add_zbc(g, gr, &zbc_val); - + if (err != 0) { + goto fail; + } zbc_val.depth = 0x1; zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8; - err |= gr_gk20a_add_zbc(g, gr, &zbc_val); + err = gr_gk20a_add_zbc(g, gr, &zbc_val); + if (err != 0) { + goto fail; + } zbc_val.depth = 0xff; zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8; - err |= gr_gk20a_add_zbc(g, gr, &zbc_val); - - if (!err) { - gr->max_default_s_index = 3; - } else { - nvgpu_err(g, "fail to load default zbc stencil table"); - return err; + err = gr_gk20a_add_zbc(g, gr, &zbc_val); + if (err != 0) { + goto fail; } + gr->max_default_s_index = 3; + return 0; + +fail: + nvgpu_err(g, "fail to load default zbc stencil table"); + return err; } int gr_gv11b_load_stencil_tbl(struct gk20a *g, struct gr_gk20a *gr) -- cgit v1.2.2