From 10f6da09eb6fffea2d50c8fe4634e0d5f8226d7d Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 19 Nov 2015 14:26:15 +0530 Subject: gpu: nvgpu: fix Coverity issues - operands not affecting result (id = 12845) - logically dead code (id = 12890) - dereference after null check (id = 12968) - unsigned compared to 0 (id = 13176) - resource leak (id = 13338, 18673) - unused pointer value (id = 13916) Bug 1703084 Change-Id: I2f401dd93126af27748c53fa1b3a59cb154af36b Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/835143 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom Reviewed-by: Seshendra Gadagottu GVS: Gerrit_Virtual_Submit Reviewed-by: Sachin Nikam --- drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 23 +++++++++++++++-------- drivers/gpu/nvgpu/gk20a/gk20a.c | 4 +--- drivers/gpu/nvgpu/gk20a/gk20a_scale.c | 3 +-- drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | 2 +- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 2 +- 5 files changed, 19 insertions(+), 15 deletions(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 8db885e3..fd28dec1 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -1688,17 +1688,14 @@ static int gk20a_channel_add_job(struct channel_gk20a *c, if (!skip_buffer_refcounting) { err = gk20a_vm_get_buffers(vm, &mapped_buffers, &num_mapped_buffers); - if (err) { - gk20a_vm_put(vm); - return err; - } + if (err) + goto err_put_vm; } job = kzalloc(sizeof(*job), GFP_KERNEL); if (!job) { - gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); - gk20a_vm_put(vm); - return -ENOMEM; + err = -ENOMEM; + goto err_put_buffers; } /* put() is done in gk20a_channel_update() when the job is done */ @@ -1718,10 +1715,20 @@ static int gk20a_channel_add_job(struct channel_gk20a *c, list_add_tail(&job->list, &c->jobs); mutex_unlock(&c->jobs_lock); } else { - return -ETIMEDOUT; + err = -ETIMEDOUT; + goto err_free_job; } return 0; + +err_free_job: + kfree(job); +err_put_buffers: + gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); +err_put_vm: + gk20a_vm_put(vm); + + return err; } void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 7ac600c0..79218c97 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -1102,7 +1102,7 @@ static int gk20a_pm_enable_clk(struct device *dev) for (index = 0; index < platform->num_clks; index++) { int err = 0; if (platform->clk[index]) - clk_prepare_enable(platform->clk[index]); + err = clk_prepare_enable(platform->clk[index]); if (err) return -EINVAL; } @@ -1623,14 +1623,12 @@ static int gk20a_domain_init(struct of_device_id *matches) { int ret = 0; struct device_node *np; - const struct of_device_id *match; struct gk20a_domain_data *gk20a_domain; np = of_find_matching_node(NULL, matches); if (!np) return -ENOENT; - match = of_match_node(matches, np); gk20a_domain = (struct gk20a_domain_data *)kzalloc (sizeof(struct gk20a_domain_data), GFP_KERNEL); if (!gk20a_domain) diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c index 0411e2fa..82e24535 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c @@ -314,8 +314,7 @@ void gk20a_scale_init(struct platform_device *pdev) return; err_get_freqs: - kfree(g->scale_profile); - g->scale_profile = NULL; + kfree(profile); } void gk20a_scale_exit(struct platform_device *pdev) diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c index 7cb386f0..c7f9a55d 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c @@ -105,7 +105,7 @@ static int gk20a_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, int err = 0; struct gr_gk20a *gr = &g->gr; u32 fbp, slice, ctrl1, val, hw_op = 0; - u32 retry = 200; + int retry = 200; u32 slices_per_fbp = ltc_ltcs_ltss_cbc_param_slices_per_fbp_v( gk20a_readl(g, ltc_ltcs_ltss_cbc_param_r())); diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 4c31d5e4..4bc8d385 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -1735,7 +1735,7 @@ int gk20a_vm_get_compbits_info(struct vm_gk20a *vm, mapped_buffer = find_mapped_buffer_locked(&vm->mapped_buffers, mapping_gva); - if (!mapped_buffer | !mapped_buffer->user_mapped) + if (!mapped_buffer || !mapped_buffer->user_mapped) { mutex_unlock(&vm->update_gmmu_lock); gk20a_err(d, "%s: bad offset 0x%llx", __func__, mapping_gva); -- cgit v1.2.2