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 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c') 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) -- cgit v1.2.2